python 多模塊文件共享變量
阿新 • • 發佈:2017-12-11
post python 無聊 file prot pos 是否 系統 模塊
Python import 包的機制是,import進來的和默認的系統的module了,都放在sys.module這個字典裏面.
多個py文件再次import的時候,會先去sys.module裏面檢查是否已經import了,如果已經import了,就不再重復import,否則就import進來
===
import glovar和from comon import glovar的命名空間是一樣的,key都是glovar
from common.glovar import x 則不一樣,test.py中這樣from import,就相當於在test.py文件中寫了一行代碼x = 1,
此時x就是test自己命名空間中的變量。所以x只在test.py中有效,無聊自己如何對x修改,都無法影響glovar 中的x
#換種說法
from glovar import x
#等同於
improt glovar
x= glovar.x
#你調用x的時候,就是自己的命名空間中的x
#當你執行x=2時,完全影響不到glovar.x
下面是解釋
#引入當前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不會再次導入,從而實現共享。
作者:coreki
鏈接:http://www.jianshu.com/p/4bb742d7d672
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
python 多模塊文件共享變量