不能創建一個名這是已知的,指的是在所有模塊相同的對象。每個模塊都有其自己的global
名稱空間。
但是,您當然可以通過使用限定名稱來訪問其他模塊的名稱空間。
編輯:(。即在文件稱爲1.py
)
使用模塊的名字,如1
或類似沒有好辦法,因爲許多不能被用作標識符。合格的名稱,如1.obj
是語法錯誤。所以我會使用文件one.py
和two.py
,然後我可以訪問one.obj
沒有這個麻煩。
import one
print one.obj # or use it any way you like
如果導入像這樣:
如果文件one.py
你有某事像
obj = "foo"
那麼您可以在文件two.py
導入此
from one import obj
然後你仍然會有相同的對象:
print obj == one.obj # will print True (they are equal)
print obj is one.obj # will print True (they are the same)
但在不同的命名OBJ變量:
obj = "bar"
print obj, one.obj # will print "bar foo"
兩個變量都沒有的情況下,分配某物他們同樣只有事宜。
所以,如果你想成爲能夠改變值(和有變化在所有使用模塊的影響),您可以使用合格的域名(one.obj
)無處不在:
import one
one.obj = "bar"
,或者而不是分配一個新的值給變量,你可以改變的現有值。這也將在所有使用模塊的效果:
one.py
:
obj = [ "foo" ]
two.py
:
from one import obj
obj[0] = "bar"
這也將有效果one.py
即使我們obj
是不同的變量比one.obj
因爲這兩個變量引用相同的列表。
如果可能的話,我會建議使用合格名稱的版本當然是因爲引用的東西隱藏了機制,並可能會讓下一個開發者感到驚訝。
感謝您的信息。你可以請分享一些示例代碼如何實現這個 – vgupta
我擴展了我的答案。 – Alfe