内部函数闭包
在函数内部定义另外一个函数,也就是函数的嵌套ide
在外部函数的做用域内,外部函数能够随意调用内部函数函数
因为内部函数的整个定义过程都在外部函数中,因此出了外部函数就没法再被调用了spa
def outside(): print('外部函数被调用')
def inside(): print('内部函数被调用') inside() >>>outside() 外部函数被调用 内部函数被调用 >>>inside() NameError: name 'inside' is not defined
闭包code
若是在一个内部函数里引用了外部函数的变量,此时这个内部函数就被称为闭包blog
若是不加关键字nonlocal来声明,就会报错,闭包仅发生在嵌套函数中作用域
def outside(): var=3 def inside(): print(var) var=5 print(var) inside() >>>outside() UnboundLocalError: local variable 'var' referenced before assignment
修改: def outside(): var=3 def inside(): nonlocal var 使用关键字声明 print(var) var=5 print(var) inside() >>>outside() 3 5