python 多模塊文件共享變量

Python import 包的機制是,import進來的和默認的系統的module了,都放在sys.module這個字典裏面.
多個py文件再次import的時候,會先去sys.module裏面檢查是否已經import了,若是已經import了,就再也不重複import,不然就import進來python

===spa

import glovar和from comon import glovar的命名空間是同樣的,key都是glovarcode

from common.glovar import x 則不同,test.py中這樣from import,就至關於在test.py文件中寫了一行代碼x = 1,
此時x就是test本身命名空間中的變量。因此x只在test.py中有效,無聊本身如何對x修改,都沒法影響glovar 中的xclass

#換種說法
from glovar import x
#等同於
improt glovar
x= glovar.x
#你調用x的時候,就是本身的命名空間中的x
#當你執行x=2時,徹底影響不到glovar.x

下面是解釋test

#引入當前glovar文件,此時namespace是glovar
import glovar

#從common目錄中引入glovar,此時namespace是glovar
from comon import glovar

#從common目錄中的glovar文件中引入x=1,此時namespace就是引用者,也就是上面的test.py
from common.glovar import x

因此,若是須要共享變量,就不要使用from file import x這種形式,而是使用import file,而後就能夠經過file.x來使用,而後file.x='abc'能夠進行修改。這樣都這樣處理全局性的變量就能夠共享的。也就是保持一個獨立的namespace,這樣python不會再次導入,從而實現共享。import

做者:coreki連接:http://www.jianshu.com/p/4bb742d7d672來源:簡書著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索