Python 中的嵌套函数如何工作?

2024-04-19

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(使用前将#替换为@)

Python 中的嵌套函数如何工作? 的相关文章

随机推荐