繁体   English   中英

为什么globals()是Python中的函数?

[英]Why is globals() a function in Python?

Python提供了函数globals()来访问所有全局变量的字典。 为什么是函数而不是变量? 以下作品:

g = globals()
g["foo"] = "bar"
print foo # Works and outputs "bar"

将全局变量隐藏在函数中的原理是什么? 最好只调用一次并将引用存储在某个地方,还是应该在每次需要时调用它?

恕我直言,这不是Python中globals()原因的重复吗? ,因为我不是在问为什么globals()存在,而是为什么它必须是一个函数(而不是变量__globals__ )。

因为它可能取决于Python实现,所以构建该字典需要进行多少工作。

在CPython中,全局变量仅保留在另一个映射中,调用globals()函数将返回对该映射的引用。 但是其他Python实现可以根据需要随意为对象创建单独的字典。

这反映了locals()函数,该函数在CPython中必须按需创建字典,因为本地通常存储在数组中(本地名称被转换为CPython字节码中的数组访问权限)。

因此,当您需要访问全局名称的映射时,可以调用globals() 在CPython中可以存储对该映射的引用,但是在其他实现中不要指望其他引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM