真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python全局變量在不同模塊中共享的原理是什么

本篇內(nèi)容主要講解“Python全局變量在不同模塊中共享的原理是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python全局變量在不同模塊中共享的原理是什么”吧!

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沽源,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

全局變量引用與修改

使用到的全局變量只是作為引用,不在函數(shù)中修改它的值的話,不需要加global關(guān)鍵字

a = 1
b = [1,2]

def func():
    print(a, b)

if __name__ == '__main__':
    func()

使用到的全局變量,需要在函數(shù)中修改的話,就涉及到歧義問(wèn)題

a = 1
b = [1,2]

def func():
    a = 2
    b[0] = 3
    print(a, b)

if __name__ == '__main__':
    func()

變量a,在函數(shù)func中"a = 2",既可以表示引用全局變量a,也可以表示創(chuàng)建一個(gè)新的局部變量,此時(shí)python默認(rèn)按照新的局部變量來(lái)處理,但對(duì)于列表b而言,"b[0] = 1"不存在這種歧義,因此直接修改了全局變量,但是如果改成了"b = [3, 4]",那么b也會(huì)變成局部變量。

特別地,當(dāng)在func中a = 2之前加入"if a == 1:"這一語(yǔ)句,腳本運(yùn)行出錯(cuò),因?yàn)檫@一語(yǔ)句引入了全局變量,導(dǎo)致了"a = 2"這一語(yǔ)句無(wú)法創(chuàng)建同名的局部變量。

Python全局變量在不同模塊中共享的原理是什么

因此,需要修改全局變量a,可以在"a = 2"之前加入global a聲明,如:

a = 1
b = [2, 3]


def func():
    global a
    a = 2
    b[0] = 1


if __name__ == '__main__':
    func()

結(jié)論:引用全局變量,不需要golbal聲明,修改全局變量,需要使用global聲明,特別地,列表、字典等如果只是修改其中元素的值,可以直接使用全局變量,不需要global聲明。

跨文件共享全局變量

Python 中 global 關(guān)鍵字可以定義一個(gè)變量為全局變量,但是這個(gè)僅限于在一個(gè)模塊(py文件)中調(diào)用全局變量,在另外一個(gè)py文件 再次使用 global x 也是無(wú)法訪問(wèn)到的,因?yàn)樵谶@個(gè)py模塊中并沒(méi)有一個(gè)叫做x的變量,于是就會(huì)報(bào)錯(cuò) 未定義。

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

全局變量管理模塊 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

設(shè)置全局變量  a.py

import sys
import globalvar as gl

gl._init()

gl.set_value('name', 'cc')
gl.set_value('score', 90)

獲取全局變量  b.py

import globalvar as gl

name = gl.get_value('name')
score = gl.get_value('score')

print("%s: %s" % (name, score))

主程序  main.py

import aimport b

運(yùn)行主程序文件   python main.py,得出的結(jié)果是  cc: 90

原理解釋

形式上全局變量在不同模塊中共享,其實(shí)還是遵循全局變量?jī)H限于在一個(gè)模塊使用原則,a、b兩個(gè)模塊都有同樣的模塊引入

import globalvar as gl

雖然形式上是在不同文件中操作相同的全局變量,但實(shí)質(zhì)上都是操作一個(gè)文件(globalvar)中的全局變量,main.py略作修改

import a
import b
import globalvar as gl

print(gl.get_value('name'))

Python全局變量在不同模塊中共享的原理是什么

到此,相信大家對(duì)“Python全局變量在不同模塊中共享的原理是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站欄目:Python全局變量在不同模塊中共享的原理是什么
URL分享:http://weahome.cn/article/gijhgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部