内包函数定义:
内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数
#函数内部定义的函数称为内部函数
一、创建一个闭包
# 使用外层函数的变量也是闭包
# 使用外层函数的形参也是闭包
def outter(): #本质就是 内存空间()
name='zs'
def inner():
print(name) # 引用外层函数变量
print(inner.__closure__) #使用_closure_内置属性来判断是否是一个闭包
return inner #返回内置函数的地址
# return inner() #返回内置函数的值
f=outter() #将inner内存地址返给f变量
f() #等价于inner()
运行结果:
(<cell at 0x0000000001E18468: str object at 0x0000000001E9D068>,)
zs
例子
def func():
print('xxx')
func1 = func
func1()
运行结果:
xxx
使用外层函数的变量也是闭包。
def outter(age):
name = 'zs'
def inner():
print(age)
print(inner.__closure__)
return inner
f = outter(10)
f() # 等价于 inner()
运行结果:
(<cell at 0x0000000002148468: int object at 0x00000000527B6D30>,)
10