def outer (): a=1 def inner(): print(a) inner() print(inner.__closure__) outer() ---------------------------------------
1
(<cell at 0x0000000002146468: int object at 0x0000000064486C10>,)# 显示这句话,表示是闭包。双层函数,内层函数要是调用了外层函数的变量,就是闭包
----------------------------------------------------------------------------------
def outer (): a=1 def inner(): print(a) inner() outer() ------------------------------------------------ 在函数里面定义个函数,并且在函数里面调用它。结果是“1”
def outer (): a=1 def inner(): print(a) return inner inn=outer() inn()
---------------------------- 外层函数的返回值用内层函数 inn=outer(),则返回innter ,表示inn=innter inn()=innter(),inn加括号表示innter也加括号,即可以直接调用内层函数。内层函数不能直接调用。 三,作用 说了这么多,不免有人要问,那这个闭包在实际的开发中有什么用呢?闭包主要是在函数式开发过程中使用。 以下介绍两种闭包主要的用途。 用途1,当闭包执行完后,仍然能够保持住当前的运行环境。
用途2,闭包可以根据外部作用域的局部变量来得到不同的结果,这有点像一种类似配置功能的作用,我们可以修改外部的变量, 闭