[英]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.