def func_100(val):
passline = 60
if val >= passline:
print('pass')
else:
print('failed') def func_150(val):
passline = 90
if val >= passline:
print('pass')
else:
print('failed') func_100(89)
func_150(89) 输出:pass
failed

未使用闭包

def set_passline(passline):
def cmp(val):
if val >= passline:
print('pass')
else:
print('failed')
return cmp f_100 = set_passline(60)
f_150 = set_passline(90)
f_100(89)
f_150(89) 输出:pass
failed

使用闭包

 def my_sum(*arg):
if len(arg) == 0:
return 0
for val in arg:
if not isinstance(val, int):
return 0
return sum(arg) def my_average(*arg):
if len(arg) == 0:
return 0
for val in arg:
if not isinstance(val, int):
return 0
return sum(arg)/len(arg) print(my_sum(1, 2, 3, 4, 5))
print(my_sum(1, 2, 3, 4, 5, ''))
print(my_average(1, 2, 3, 4, 5))
print(my_average()) 输出:15
0
3
0

未使用闭包

 def my_sum(*arg):
return sum(arg) def my_average(*arg):
return sum(arg)/len(arg) def dec(func):
def in_dec(*arg):
if len(arg) == 0:
return 0
for val in arg:
if not isinstance(val, int):
return 0
return func(*arg)
return in_dec my_sum = dec(my_sum)
my_average = dec(my_average) print(my_sum(1, 2, 3, 4, 5))
print(my_sum(1, 2, 3, 4, 5, ''))
print(my_average(1, 2, 3, 4, 5))
print(my_average()) 输出:15
0
3
0

使用闭包

闭包作用

1:封装

2:代码复用

python 闭包初识的更多相关文章

  1. Python 闭包

    什么是闭包? 闭包(closure)是词法闭包(lexical closure)的简称.闭包不是新奇的概念,而是早在高级程序语言开始发展的年代就已产生. 对闭包的理解大致分为两类,将闭包视为函数或者是 ...

  2. Python闭包与函数对象

    1. Python闭包是什么 在python中有函数闭包的概念,这个概念是什么意思呢,查看Wikipedia的说明如下: “ In programming languages, closures (a ...

  3. Python闭包及装饰器

    Python闭包 先看一个例子: def outer(x): def inner(y): return x+y return innder add = outer(8) print add(6) 我们 ...

  4. Python闭包详解

    Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...

  5. Python闭包及其作用域

    Python闭包及其作用域 关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记 如果在一个内部函数里,对一个外部作用域(但不是全局作用域 ...

  6. Python 闭包小记

    闭包就是能够读取其他函数内部变量的函数.例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“.在本质上,闭包是将函数内部和函数外部连接起来 ...

  7. 理解Python闭包概念

    闭包并不只是一个python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...

  8. Python闭包举例

    Python闭包的条件: 1.函数嵌套.在外部函数内,定义内部函数. 2.参数传递.外部函数的局部变量,作为内部函数参数. 3.返回函数.外部函数的返回值,为内部函数. 举例如下: def line_ ...

  9. python 闭包和装饰器

    python 闭包和装饰器 一.闭包闭包:外部函数FunOut()里面包含一个内部函数FunIn(),并且外部函数返回内部函数的对象FunIn,内部函数存在对外部函数的变量的引用.那么这个内部函数Fu ...

随机推荐

  1. JS 对象API之判断自有属性、共有属性

    自有属性:对象实例私有的属性,只有该对象实例可用 共有属性:对象实例共有的属性,所有对象实例都可用 要判断对象实例的自有属性.共有属性:首先看看JS给我们提供的两个方法: 1.判断是否是对象实例的属性 ...

  2. SQL Server 审计操作概念

    概述 对于一般的数据库系统审计可能不太会被重视,但是对于金融系统就不一样的.金融系统对审计要求会很高,除了了记录数据库各种操作记录还可能会需要开发报表来呈现这些行为数据.使用SQL Server Au ...

  3. 【读书笔记】【深入理解ES6】#6-Symbol和Symbol属性

    在ES5及早期版本中,JS语言包含5中原始类型: 字符串型 数字型 布尔型 null undefined ES6引入了第六种原始类型: Symbol 创建Symbol let firstName = ...

  4. AVFoundation 框架初探究(三)

    这篇总结什么? 在该系列的上一篇的文章中,我们总结的大致内容如下: 1.视频录制  AVCaptureSession + AVCaptureMovieFileOutput 2.视频录制 AVCaptu ...

  5. 开发高性能JAVA应用程序基础(集合篇)

    集合类在开发中使用非常频繁,使用时合理的选择对提高性能小有帮助.而且大部分面试都会有与集合相关的问题,例如ArrayList和LinkedList的对比. 了解API的集成与操作架构,才能了解何时该采 ...

  6. fb27a9aeaf604597826718c467cc9f4f 为什么我老收到这个

    fb27a9aeaf604597826718c467cc9f4f   为什么我老收到这个fb27a9aeaf604597826718c467cc9f4f   为什么我老收到这个fb27a9aeaf60 ...

  7. set使用实例1+lower_bound(val)(个人模版)

    set使用实例1+lower_bound(val): #include<stdio.h> #include<set> #include<iostream> #inc ...

  8. bzoj 3295: [Cqoi2011]动态逆序对(树套树 or CDQ分治)

    Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...

  9. bzoj:1699;poj 3264: [Usaco2007 Jan]Balanced Lineup排队

    Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置 ...

  10. Codeforces 834E The Bakery【枚举+数位dp】

    E. Ever-Hungry Krakozyabra time limit per test:1 second memory limit per test:256 megabytes input:st ...