函数的嵌套定义
内部函数可以使用外部的函数变量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def tao(): a = 1 def ni(): print(a) return print('houzi') ni() tao()
nonlocal
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
a = 1 def tao(): a = 1 def ni(): b = 2 print(a) print('ni') def zou(): nonlocal a#nonlocal 声明一个上层局部变量(只找离当前这个函数有a的局部层) a += 1 print("zi") zou() return print('houzi') ni() tao()
nonlocal只能用于局部变量,找上一层离当前函数最近一层的局部变量
声明了nonlocal的内部函数的变量修改会影响到 离当前函数最近一层的局部变量
小节注意
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def fuack(): print('2334') return sb = fuack#函数名可以赋值 sb()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
l =[fuack,sb]#函数名可以作为容器类型的元素 for i in l: i()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def low(): print("789") def hah(f): f() return f #函数名可以作为函数的返回值 hah(low)#函数名可以作为函数的参数 low()