Python提供了globals()访问所有全局变量的字典的功能.为什么这是一个函数而不是一个变量?以下作品:
g = globals()
g["foo"] = "bar"
print foo # Works and outputs "bar"
Run Code Online (Sandbox Code Playgroud)
在函数中隐藏全局变量的理由是什么?最好只调用一次并在某处存储引用,还是应该在每次需要时调用它?
恕我直言,这不是Python中globals()的Reason的重复?,因为我不是问为什么globals()存在,而是为什么它必须是一个函数(而不是一个变量__globals__).
Mar*_*ers 17
因为它可能依赖于Python实现构建该字典需要做多少工作.
在CPython中,全局变量只保留在另一个映射中,并且调用该globals()函数会返回对该映射的引用.但是其他Python实现可以根据需要随意为对象创建单独的字典.
这反映了locals()函数,在CPython中必须按需创建字典,因为locals通常存储在一个数组中(本地名称在CPython字节码中被转换为数组访问).
所以globals()当你需要访问全局名称的映射时,你会打电话.存储对该映射的引用在CPython中有效,但在其他实现中不要指望其他.