1. 程式人生 > >python 多模塊文件共享變量

python 多模塊文件共享變量

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 多模塊文件共享變量