python 闭包closure
2017-06-19 本文已影响3人
ShuHaiShiYi
当内部函数对外部函数的变量(非全局变量)进行了引用,则内部函数被称之为闭包
举个栗子:
![](https://img.haomeiwen.com/i3835087/d50efb4e2df62c19.png)
调用:
c = outter(5) # 返回 inner这个函数名,即c = inner
c(6) # 即inner(6),结果是30
常见错误:
![](https://img.haomeiwen.com/i3835087/8c79f9dd358ad2df.png)
解决办法:
添加nonlocal关键字(限python3)
![](https://img.haomeiwen.com/i3835087/536934bee5853b2a.png)
python2的解决办法:
将a定义成列表[5]
![](https://img.haomeiwen.com/i3835087/8b4428fa518ea97c.png)
感谢小甲鱼的教程,进一步了解了闭包。