Python 跨檔案全域性變數

郭耀文
3 min readDec 1, 2020

--

下述將為各位介紹python如何實現跨檔案的全域變數方法,透過此方法不但可以快速宣告一個新的全域變數,接收端也可以輕易獲取全域變數之值。

■ 簡介:

以下為各位介紹Python中,跨檔案全域性變數的使用方法。

■ 範例檔案宣告:

為了方便Demo首先我們需要準備三個.py檔案,包含:main.py、show.py、globalvar.py。

main.py 內容為:

import globalvar as gl
import show
import logging
def main():
logging.info("I'm in main.py")
A = "main Hello Word"
gl.set_value('main_string', A)
logging.info("Set_value => " + A)
show.show_str()
if __name__ == "__main__":
# Create log file
FORMAT = '%(filename)s[line:%(lineno)d] %(levelname)s => %(message)s'
logging.basicConfig(level=logging.DEBUG, filemode='w', format=FORMAT)
# 宣告全域變數
gl._init()
main()

globalvar.py 內容為:

def _init(): 
global _global_dict
_global_dict = {}
def set_value(name, value):
_global_dict[name] = value

def get_value(name, defValue=None):
try:
return _global_dict[name]
except KeyError:
return defValue

show.py 內容為:

import globalvar as gl
import logging
def show_str():
logging.info("I'm in show.py")
A = gl.get_value('main_string')
logging.info("Get_value => " + A)

■ 範例檔案說明:

由於在範例內,我有加入Logging機制,讓我能夠知道比print()顯示結果更詳細資訊(檔案名稱、行數、輸出等級、輸出結果),如果想要更加了解Python的Logging機制的話可以參考我的:Python Logging 日誌管理教學

此次教學跨檔案全域性變數主要是靠定義在globalvar.py內的_global_dict字典來儲存我們宣告的變數值。在第一次使用時,需在main.py內執行gl._init()來宣告字典 與 import globalvar as gl。宣告全域變數時,引用globalvar.py內的gl.set_value("全域變數名稱", 變數值)即可,而接值時,則引用globalvar.py內的gl.get_value("全域變數名稱")即可。

輸出結果如下:

main.py[line:6] INFO => I'm in main.py
main.py[line:9] INFO => Set_value => main Hello Word
show.py[line:5] INFO => I'm in show.py
show.py[line:7] INFO => Get_value => main Hello Word

--

--