def maker(n):
def action(x):
return x ** n
return action
f = maker(2)
print(f)
print(f(3))
print(f(4))
g = maker(3)
print(g(3))
print(f(3)) # still remembers 2
为什么嵌套函数会记住第一个值2
虽然maker()
已返回并退出action()
叫做?
你基本上是在创建一个closure http://en.wikipedia.org/wiki/Closure%5F%28computer%5Fscience%29.
在计算机科学中,闭包是具有绑定在词法环境中的自由变量的一流函数。这样的函数被称为“封闭”其自由变量。
相关阅读:闭包:为什么它们如此有用? https://stackoverflow.com/questions/1305570/closures-why-are-they-so-useful
闭包只是让函数访问本地状态的一种更方便的方法。
From http://docs.python.org/reference/compound_stmts.html http://docs.python.org/reference/compound_stmts.html:
程序员注:函数是一等对象。在函数定义内执行的“def”形式定义了可以返回或传递的本地函数。嵌套函数中使用的自由变量可以访问包含 def 的函数的局部变量。有关详细信息,请参阅命名和绑定部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)