gpt4 book ai didi

Python - locals() 和闭包

转载 作者:太空狗 更新时间:2023-10-30 02:13:00 25 4
gpt4 key购买 nike

我找不到对此行为的充分解释。

>>> def a():
... foo = 0
... print locals()
... def b():
... print locals()
... b()

>>> a()
{'foo': 0}
{}

但是:

>>> def a():
... foo = 0
... print locals()
... def b():
foo
... print locals()
... b()

>>> a()
{'foo': 0}
{'foo': 0}

我知道在第二种情况下有一个闭包,但我找不到关于实际是什么以及在什么条件下应该返回函数 locals() 的详细描述。

最佳答案

如果您不在闭包内分配给 foo,Python 会将其解析为作用域上一级的 foo(一直向上,直到找到 foo 某处或抛出异常)。

通过在第二个示例中的 b() 中提及 foo,您将 foo 放入 b()< 中的局部变量中,但它解析为 a() 主体内的 foo。例如,如果您在 b() 中分配 foo = 1,您会看到

 {'foo': 0}
{'foo': 1}

作为输出。

关于Python - locals() 和闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com