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

2022-07-26 01:54:07 字數 1909 閱讀 9579

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

python 中global關鍵字可以定義乙個變數為全域性變數,但是這個僅限於在乙個模組(py檔案)中呼叫全域性變數:

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

global 的基礎用法

x = 6

deffunc():

global

x #定義外部的x

x = 1func()

print

(x)#

輸出1

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

借鑑global 關鍵字的思路,既然在乙個檔案裡面可以生效的話,那麼我們就專門為全域性變數定義乙個「全域性變數管理模組」就好了

具體**:

#

-*- coding: utf-8 -*-

def_init():#初始化

global

_global_dict

_global_dict ={}

defset_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

golgol._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

')

就這麼簡單~

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

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

python3使用 python3使用模組

python內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。我們以內建的sys模組為例,編寫乙個hello的模組 usr bin env python3 coding utf 8 a test module author michael liao import sys def tes...

Python3 使用模組

python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。我們以內建的sys模組為例,編寫乙個hello的模組 usr bin env python3 coding utf 8 a test module author michael liao import sys def ...

python3 常用模組 RE模組

一.常用正規表示式符號和語法 匹配所有字串,除 n以外 表示範圍 0 9 匹配前面的子表示式零次或多次。要匹配 字元,請使用 匹配前面的子表示式一次或多次。要匹配 字元,請使用 匹配字串開頭 匹配字串結尾 re 轉義字元,使後乙個字元改變原來的意思,如果字串中有字元 需要匹配,可以 或者字符集 re...