Python闭包
知识点
闭包内容
闭包定义
闭包是一个函数中嵌套着一个函数,相比较对象而言其占用系统空间更小,可以实现小功能。相比较函数而言,其能够传递函数和数据,而函数只能实现功能。
代码结构
1
2
3
4
5
6
7
8
9def fx(a,b):
num = 100
def sum(x):
# 当需要修改函数中的变量值时,需要用nonlocal进行申明,反之就不用修饰,直接调用即可
nonlocal num
num = 20
print(a*x+b+num)
# 函数名未加名称相当于返回该函数的引用
return sum匿名函数、函数、闭包、对象之间的区别
匿名函数:完成最基本的功能,传递的是这个函数的引用,只有功能。
函数:普通函数能够完成较为复杂的功能,传递的是这个函数的引用,只有功能
闭包:闭包能够完成较为复杂的功能,传递的是这个闭包中的函数和数据,因此传递的是功能+数据
对象:对象能够完成最为复杂的功能,可以传递很多数据和很多功能,因此传递的是数据+功能
灵魂拷问:闭包和函数的区别
拓展
python内置函数
1
2
3
4
5
6
7
8
9# hasattr(对象, '属性名'):用于判断对象中是否含有某属性
hasattr(对象名, '属性名') # 属性名需要用引号包裹
# setattr(对象, '属性名', 属性值):用于向已有额对象中添加/更新属性信息,如果属性已存在,则会用新的属性值更新,如果不存在,则会添加一个新的属性值
setattr(对象名, '属性名', 属性值) # 属性名需要用引号包裹,而属性值则看情况
# getattr(对象名, '属性名', default):用于获取对象中的属性值,如果对象中无该属性值,则返回default,否则返回属性值
# default也可以不指定任何值
getattr(对象名, '属性名', 属性值) # 属性名需要用引号包裹