在我遇到的所有实际情况中,以下是True
:
import sys print(sys.modules[__name__].__dict__ is globals()) def x(): pass print(sys.modules[x.__module__].__dict__ is x.__globals__) class A: def x(): pass print(sys.modules[A.x.__module__].__dict__ is A.x.__globals__) a = A() print(sys.modules[a.x.__module__].__dict__ is a.x.__globals__
返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是调用它的模块)。
这里没有提到只读。事实上,在大多数情况下,字典是非常可写的。
对包含函数全局变量的字典的引用 - 定义函数的模块的全局命名空间。
只读
为什么属性列为只读?就此而言,"只读"适用于属性本身或它绑定的字典?似乎都不是这样。例如,https://stackoverflow.com/a/49077211/2988730。