来自一条评论:“Python中的global基本上是指在模块级别”。然而,在名为my_module.py
的文件中运行此代码:
import my_module as m
foo = 1
m.bar = m.foo + 1
if __name__ == "__main__":
print('foo:', foo)
print('m.foo:', m.foo)
print('m.bar:', m.bar, '\n')
for attrib in ('foo', 'bar'):
print("'{0}' in m.__dict__: {1}, '{0}' in globals(): {2}".format(
attrib,
attrib in m.__dict__,
attrib in globals()))
输出:
foo: 1
m.foo: 1
m.bar: 2
'foo' in m.__dict__: True, 'foo' in globals(): True
'bar' in m.__dict__: True, 'bar' in globals(): False
模块和全局命名空间是什么?
为什么模块命名空间中有一个__dict__
属性,而全局命名空间中没有?
为什么m.bar
是__dict__
的一部分,而不是globals()
的一部分?
m.m.m.m.bar
。 - mins__dict__
和globals()
的内容。我无法在不导入的情况下进行比较。 - mins