User Tools

Site Tools

study:python-topic:20241112-002:index

Python 跨檔案全域性變數 (2024-11-12)

Local Backup

  • 下述將為各位介紹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

參考文獻 & 銘謝:

Permalink study/python-topic/20241112-002/index.txt · Last modified: 2024/11/12 08:58 by jethro

oeffentlich