闭包函数
一、闭包函数
闭包:被函数包裹的函数,定义在函数内部的函数 def func(): name = 'eva' def inner(): print(name)
# 闭包中使用的变量可以被外层函数所传递,外层函数可以为闭包函数传递参数 def outter(num): def inner(): print(num) # 10 inner() def t(): count = 10 outter(count) t()
2.2 闭包函数的意义
由于有了作用域的关系,我们就不能拿到函数内部的变量和函数了。
我们都知道函数内的变量我们要想在函数外部用,可以直接返回这个变量,那么如果我们想在函数外部调用函数内部的函数呢?
是不是直接就把这个函数的名字返回就好了?
这才是闭包函数最常用的用法
def func(): name = 'eva' def inner(): print(name) return inner f = func() f()
#输出的__closure__有cell元素 :是闭包函数 def func(): name = 'eva' def inner(): print(name) print(inner.__closure__) return inner f = func() f() #输出的__closure__为None :不是闭包函数 name = 'egon' def func2(): def inner(): print(name) print(inner.__closure__) return inner f2 = func2() f2()