匿名函数、函数、闭包、对象之间的关系:
1.匿名函数:完成最基本的函数功能
2.函数:完成比较复杂的功能
3.闭包:能够同时传递数据 + 完成功能的函数
4.对象:完成最为复杂的功能,并且能够传递数据
def func(a, b):
# 定义一个c
c = 2
def call_func():
print('*' * 20)
print('在闭包中改变外部变量需要加:nonlocal')
# 在闭包中改变外部已经定义的值需要加:nonlocal
nonlocal c
# 改变c的值
c = 5
print('c = ', c)
print('此时c的地址是:', id(c))
print('*' * 20)
# 将函数传入的值进行运算
print('a+b的结果是:', a+b)
# .__closure__函数返回cell则此函数为闭包,返回Non则不是闭包
print(call_func.__closure__)
print('c = ', c)
print('此时c的地址是:', id(c))
return call_func
f = func(2, 10)
f()