python多模塊共享同一變量


Python import 包的機制是import進來的系統的module都放在sys.module這個字典里面

多個py文件在import的時候,會先去sys.module里面檢查是否已經import了,如果已經import了,就不再重復import,否則就import進來

from aaa.yyy import x則不一樣,test.py中這樣from import,此時x就是test自己命名空間中的變量。所以x只在test.py中有效,無論如何對x修改,都無法影響yyy中的x

也就是說
from yyy import x
等同於

improt yyy
x= yyy.x  # 當你執行x=2時,完全影響不到yyy.x

所以,如果需要共享變量,就不要使用from yyy import x這種形式,而是使用import file,然后就可以通過yyy.x來使用,然后yyy.x='abc'可以進行修改。這樣處理全局性的變量就可以共享的。也就是保持一個獨立的namespace,這樣python不會再次導入,從而實現共享。

示例:

# 目錄樹
multi_module
│  main.py
│  val_sync.py
# val_sync.py
DICT = {
	'a':1,
	'b':2,
}
# main.py
import val_sync as mv
print(mv.DICT)
mv.DICT['c'] = 3
print(mv.DICT)
mv.DICT.pop('a')
print(mv.DICT)
python main.py
out:
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 3}
{'b': 2, 'c': 3}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM