從a comment:「全球在Python中基本上意味着在模塊級別」。然而,在一個名爲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()
的一部分?
很清楚,我的錯誤並不是要明白兩個foo是不同的實體,否則我也會挑戰其餘的。順便說一句,我現在也明白我也可以訪問'm.m.m.m.bar': – mins
我有一個問題,但是:是否有一個實際的用例來導入模塊本身?還是隻是好奇? – MSeifert
不是一個真實的案例。試圖比較'__dict__'和'globals()'的內容。我不能沒有進口。 – mins