1. 程式人生 > >Python跨檔案全域性變數

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 關鍵字的思路,既然在一個檔案裡面可以生效的話,那麼我們就專門為全域性變數定義一個“全域性變數管理模組”就好了

具體程式碼:

# -*- 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:
        return defValue

相信如果你看懂了就應該知道思路了,利用global的單獨檔案全域性性,從而可以定義在一個檔案中的全域性變數,然後這個單個檔案的全域性變數可以儲存多個檔案的共同全域性變數

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

# -*- coding:utf-8 -*-

from YourPage import gol

gol._init()#先必須在主模組初始化(只在Main模組需要一次即可)


#定義跨模組全域性變數
gol.set_value('CODE','UTF-8')
gol.set_value('PORT',80)
gol.set_value('HOST','127.0.0.1')

然後其他的任何檔案只需要匯入即可使用:

# -*- coding: utf-8 -*-
from YourPage import gol

#不需要再初始化了
ROOT = gol.get_value('ROOT',80)
CODE = gol.get_value('CODE')

就這樣就可以實現跨檔案的全域性變數使用;

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


相關推薦

Python檔案全域性變數的方法

  Python 中 global 關鍵字可以定義一個變數為全域性變數,但是這個僅限於在一個模組(py檔案)中呼叫全域性變數,在另外一個py檔案 再次使用 global x 也是無法訪問到的,因

Python檔案全域性變數

儘管某些書籍上總是說避免使用全域性變數,但是在實際的需求不斷變化中,往往定義一個全域性變數是最可靠的方法,但是又必須要避免變數名覆蓋。Python 中 global 關鍵字可以定義一個變數為全域性變數,但是這個僅限於在一個模組(py檔案)中呼叫全域性變數:我們知道Python

python實現檔案全域性變數

Python 中 global 關鍵字可以定義一個變數為全域性變數,但是這個僅限於在一個模組(py檔案)中呼叫全域性變數。 多個檔案之間使用同一個全域性變數demo_value: 檔案1:globalvar.py class GlobalVar:

Python實現檔案全域性變數的方法

原文地址: https://www.cnblogs.com/rnckty/p/7722603.html Python 中 global 關鍵字可以定義一個變數為全域性變數,但是這個僅限於在一個模組(py檔案)中呼叫全域性變數,在另外一個py檔案 再次使用 global

Python中的全域性變數與global

剛學習Python,遇到個問題:為什麼有些定義在函式外的變數可以直接被函式使用,有些就不行呢? 如:   count = 0   def change():     count += 1   change() # 報錯   L = []   def changeL():     L.appen

Python中的全域性變數和區域性變數

當局部變數和全域性變數名字一樣時,依然是不同的變數,但是值一樣時,地址依然一樣。值不一樣時,地址不一樣,修改區域性變數,全域性變數的值依然不變,例如: num = 100 def test(): num = 99 print("區域性變數num

Python中的全域性變數與區域性變數的區別

全域性變數與區域性變數兩者的本質區別就是在於作用域 用通俗的話來理解的話, 全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問 區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖

Python多模組全域性變數引用和修改

定義三個py檔案: g1.py,  t1.py,  t2.py 其中g1.py定義了兩個全域性變數,而t1.py和t2.py引用g1.py模組。三個模組檔案都具有修改和列印全域性變數的方法。 根據以下程式碼的執行結果,可以得出:原始定義模組中的全域性變數,和引用模組中的全

每日學點python之八(全域性變數與區域性變數名字相同問題)

1.可變型別與不可變型別 可變型別,值可以改變: 列表 list 字典 dict 不可變型別,值不可以改變: 數值型別 int, long, bool, float 字串 str 元組 tuple 看如下程式碼: 2.修改全域性

C語言檔案呼叫變數方法

使用示例 分別新建三個檔案,a.c ,a.h ,b.c 內容如下 a.c #include<stdio.h> int a = 10;a.h extern int a;b.c

python中的全域性變數和區域性變數以及可變資料型別

全域性變數和區域性變數 一、區域性變數:在函式內部定義的變數,叫區域性變數 當這個函式被呼叫的時候,這個變數存在,當這個函式執行完成之後,因為函式都已經結束了,所有函式裡面定義的變數也就結束了 在一個函式中定義的區域性變數,只能在這個函式中使用,不能再其他

淺談python中的全域性變數和區域性變數~

在被呼叫函式內賦值的變元和變數,處於該函式的“區域性作用域”。在所有函式之外賦值的變數,屬於“全域性作用域”。處於區域性作用域的變數,被稱為“區域性變數”。處於全域性作用域的變數,被稱為“全域性變數”。一個變數必是其中一種,不能既是區域性的又是全域性的。 可以

疑問:Python模組呼叫函式時,被呼叫函式內部不能使用全域性變數

簡單案例: 模組1中的函式 def add(): print(a) if __name__=='__main__': a=10 add()  模組2中的函式 from 模組1 import add a=20 add()

python 3 實現定義模組的全域性變數和使用

python3 定義全域性變數的方法有哪些? 使用global關鍵字可以定義一個變數為全域性變數 定義一個“全域性變數管理模組” global與全域性變數管理模組的使用環境 global的作用就是把區域性變數提升為全域性變數僅限於當前檔案 當有另一

python模組的全域性變數引用

在python面向物件開發的過程中往往會有###全域性變數的問題,對於新入局小白來說確實 是一個不小的問題,接下來可以給大家提供一種思路。 儘管某些書籍上總是說避免使用全域性變數,但是在實際的需求不斷變化中,往往定義一個全域性變數是最可靠的方法,但是又必須要避免變數名覆蓋。 Pyth

C語言中檔案全域性變數

宣告:突然看到這篇文章,發現了c語言中使用全域性變數的錯誤,特轉之。 func.c 123456 int buf = 0; void func() { buf = 2; /* Do something else */ } ma

python通過配置檔案共享全域性變數

在使用Python編寫的應用的過程中,有時會遇到多個檔案之間傳遞同一個全域性變數的情況,此時通過配置檔案定義全域性變數是一個比較好的選擇。 首先配置config.py模組,config需要設定get_xxx和set_xxx的方法提供對外的介面。 config

python在不同檔案之間共享全域性變數方案的探討

還是以案例為開頭: 最近做的專案中有這麼一個需求:A/B/C三個檔案,我把B/C中要用到的全域性變數,都放在A檔案中,這樣後面專案大了,全域性變數多了的話不至於出現呼叫混亂的情況。變數的具體值,可以在程式開始執行的時候從配置檔案/Redis中讀取,這樣不至於寫

Python千萬要注意的全域性變數和區域性變數問題

1、直接在函式中呼叫全域性變數 m = 100 def fun(): print("m1:",m) fun() print("m2:", m)  輸出: 2、函式體內呼叫與全域性變數同名的區域性變數 m = 100 def fun(): m = 50

python--全域性變數和區域性變數

區域性變數: 是在函式內部定義的變數,只能在函式內部使用 函式執行結束後,函式的區域性變數,會被系統回收 作用:在函式內部使用,臨時儲存函式內部需要使用的資料 全域性變數: 是在函式外部定義的變數(沒有定義某一個函式內,所有函式都