Python跨文件全局變量的使用


盡管某些書籍上總是說避免使用全局變量,但是在實際的需求不斷變化中,往往定義一個全局變量是最可靠的方法,但是又必須要避免變量名覆蓋。

 

Python 中 global 關鍵字可以定義一個變量為全局變量,但是這個僅限於在一個模塊(py文件)中調用全局變量:

我們知道Python使用變量的時候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定義(var x; var y=2;var z='222'),這樣的話,在函數內部就無法操作外部的變量了,因為它總會認為你是在定義一個新變量並且賦值,不過 global 就可以解決這個問題。

 

global 的基礎用法 :

x = 6
def func(): global x #定義外部的x
    x = 1 func() print (x) #輸出1

這個時候,即使你在另外一個py文件 再次使用 global x 也是無法訪問到的,因為在這個py模塊中並沒有一個叫做x的變量,於是就會報錯 未定義。

 

那么我們怎么辦?

借鑒global 關鍵字的思路,既然在一個文件里面可以生效的話,那么我們就專門為全局變量定義一個“全局變量管理模塊”就好了

新建一個py文件,文件名是:gol.py,具體代碼:

# -*- coding: utf-8 -*-
 
def _init():#初始化
    global _global_dict _global_dict = {} def set_value(key,value): """ 定義一個全局變量 """ _global_dict[key] = value def get_value(key,defValue=None):   """ 獲得一個全局變量,不存在則返回默認值 """
    try: return _global_dict[key] except KeyError:

相信如果你看懂了就應該知道思路了,利用global的單獨文件全局性,從而可以定義在一個文件中的全局變量,然后這個單個文件的全局變量可以保存多個文件的共同全局變量

操作的時候,以Key對Value 的方法操作,我相信大家都懂。

# -*- coding:utf-8 -*-
 
import gol gol._init()#先必須在主模塊初始化(只在Main模塊需要一次即可)
 
 
#定義跨模塊全局變量
gol.set_value('uuid',uuid) gol.set_value('token',token)

 

然后其他的任何文件只需要導入即可使用:

# -*- coding: utf-8 -*-
import gol #不需要再初始化了
ROOT = gol.get_value('uuid') CODE = gol.get_value('token')

 

就這樣就可以實現跨文件的全局變量使用;

並且還有一個簡單但是強大的全局變量管理器,你可以自己添油加醋,實現一些比如全局變量禁止直接修改,禁止修改某些只可讀的全局變量等等。

 


免責聲明!

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



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