Python 3 實(shí)現(xiàn)定義跨模塊的全局變量和使用教程
盡管某些書(shū)籍上總是說(shuō)避免使用全局變量,但是在實(shí)際的需求不斷變化中,往往定義一個(gè)全局變量是最可靠的方法,但是又必須要避免變量名覆蓋。
Python 中 global 關(guān)鍵字可以定義一個(gè)變量為全局變量,但是這個(gè)僅限于在一個(gè)模塊(py文件)中調(diào)用全局變量:
我們知道Python使用變量的時(shí)候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定義(var x; var y=2;var z='222'),這樣的話,在函數(shù)內(nèi)部就無(wú)法操作外部的變量了,因?yàn)樗倳?huì)認(rèn)為你是在定義一個(gè)新變量并且賦值,不過(guò) global 就可以解決這個(gè)問(wèn)題。
global 的基礎(chǔ)用法 :
x = 6 def func(): global x #定義外部的x x = 1 func() print (x) #輸出1
這個(gè)時(shí)候,即使你在另外一個(gè)py文件 再次使用 global x 也是無(wú)法訪問(wèn)到的,因?yàn)樵谶@個(gè)py模塊中并沒(méi)有一個(gè)叫做x的變量,于是就會(huì)報(bào)錯(cuò) 未定義。
那么我們?cè)趺崔k?
借鑒global 關(guān)鍵字的思路,既然在一個(gè)文件里面可以生效的話,那么我們就專(zhuān)門(mén)為全局變量定義一個(gè)“全局變量管理模塊”就好了
具體代碼:
# -*- coding: utf-8 -*-
def _init():#初始化
global _global_dict
_global_dict = {}
def set_value(key,value):
""" 定義一個(gè)全局變量 """
_global_dict[key] = value
def get_value(key,defValue=None):
""" 獲得一個(gè)全局變量,不存在則返回默認(rèn)值 """
try:
return _global_dict[key]
except KeyError:
return defValue
相信如果你看懂了就應(yīng)該知道思路了,利用global的單獨(dú)文件全局性,從而可以定義在一個(gè)文件中的全局變量,然后這個(gè)單個(gè)文件的全局變量可以保存多個(gè)文件的共同全局變量
操作的時(shí)候,以Key對(duì)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')
然后其他的任何文件只需要導(dǎo)入即可使用:
# -*- coding: utf-8 -*-
from YourPage import gol
#不需要再初始化了
ROOT = gol.get_value('ROOT',80)
CODE = gol.get_value('CODE')
就這么簡(jiǎn)單~
就這樣就可以實(shí)現(xiàn)跨文件的全局變量使用;
并且還有一個(gè)簡(jiǎn)單但是強(qiáng)大的全局變量管理器,你可以自己添油加醋,實(shí)現(xiàn)一些比如全局變量禁止直接修改,禁止修改某些只可讀的全局變量等等。
總結(jié)
以上所述是小編給大家介紹的Python 3 實(shí)現(xiàn)定義跨模塊的全局變量和使用教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
python安裝庫(kù)的最詳細(xì)方法(以安裝pygame庫(kù)為例)
在學(xué)習(xí)了一個(gè)學(xué)期的python之后,我決定對(duì)pygame下手了,下面這篇文章主要給大家介紹了關(guān)于python安裝庫(kù)的最詳細(xì)方法,本文主要以安裝pygame庫(kù)為例,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Python自動(dòng)化辦公之合并多個(gè)Excel
在日常的辦公自動(dòng)化工作中,尤其是處理大量數(shù)據(jù)時(shí),合并多個(gè)?Excel?表格是一個(gè)常見(jiàn)且繁瑣的任務(wù),下面小編就來(lái)為大家介紹一下如何使用Python輕松實(shí)現(xiàn)合并多個(gè)Excel吧2025-02-02
Python編程實(shí)現(xiàn)使用線性回歸預(yù)測(cè)數(shù)據(jù)
這篇文章主要介紹了Python編程實(shí)現(xiàn)使用線性回歸預(yù)測(cè)數(shù)據(jù),具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
python?ConfigParser庫(kù)的使用及遇到的坑
這篇文章主要介紹了python?ConfigParser庫(kù)的使用及遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Django多進(jìn)程滾動(dòng)日志問(wèn)題解決方案
這篇文章主要介紹了Django多進(jìn)程滾動(dòng)日志問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python讀取HDFS目錄下的所有文件的實(shí)現(xiàn)示例
HDFS是Apache Hadoop的分布式文件系統(tǒng),本文主要介紹了Python讀取HDFS目錄下的所有文件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

