一、闭包函数的概念
闭包 = 一个函数 + 外部封闭的作用域 闭包函数的特征:
- 函数中嵌套一个函数
- 外层函数rertun返回 内层函数
- 内层函数有引用 外部作用域 的非全局变量
def funcB1():
x = 100
def funcB2():
c = x * 2
print(c)
return funcB2
res = funcB1()
print(res)
res()
因为作用域的原因,在函数外部就无法拿到函数中的变量和内部函数。通常我们需要使用函数中的变量时,才去将变量返回的办法。同理,在使用内部函数时,我们也可以将函数名作为返回值返回。 这是闭包最常用的方式。
二、如何判断是否是闭包函数
函数名__closure__ 在函数是闭包函数时,返回一个cell元素;不是闭包时,返回None。 输出cell:
def funcB1():
x = 100
def funcB2():
c = x * 2
print(c)
print(funcB2.__closure__)
return funcB2
res = funcB1()
res()
输出None:
name = 'python'
def func():
def inner():
print(name)
print(inner.__closure__)
return inner
f = func()
f()
|