[英]Import module scope and variables
我的問題是關於python 2.7名稱空間和模塊導入。 我的問題是理解為什么這樣做:如果我有一個模塊文件memory.py:
memory={}
def insert_into(a,b):
memory[a]=b
然后兩個文件mod1.py和mod2.py具有類似的代碼:mod1.py:
import memory
memory.insert_into('a',1)
mod2.py:
import memory
memory.insert_into('b',2)
最后是我作為腳本運行的test.py文件:
import mod1,mod2
如果我以某種方式測試:
mod1.memory.memory is mod2.memory.memory
它返回True。 這是預期的嗎? 在什么時候mod1和mod2的名稱空間會發生糾纏? 抱歉,如果我的問題沒有道理,那是我第一次。
在Python中,模塊本身就像一個單例。 您所看到的就是這種效果。
您可能會注意到,實際上使用mod1.memory.memory
或mod2.memory.memory
並沒有更新這些模塊中的memory
字典,但是它們中的每一個都是module
對象,並且都引用相同的對象(一個空字典( memory={}
)),並且當且僅當x和y是同一對象時, x is y
才為true。
因此,在test.py
您可以嘗試:
print mod1.memory.memory
print mod2.memory.memory
他們一點也不被弄亂。 您只需在兩個位置導入同一對象,自然Python會報告它是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.