中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-06-25 13:54:57 來源:億速云 閱讀:271 作者:chen 欄目:編程語言

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

全局變量引用與修改

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

a = 1
b = [1,2]

def func():
    print(a, b)

if __name__ == '__main__':
    func()

使用到的全局變量,需要在函數中修改的話,就涉及到歧義問題

a = 1
b = [1,2]

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

if __name__ == '__main__':
    func()

變量a,在函數func中"a = 2",既可以表示引用全局變量a,也可以表示創建一個新的局部變量,此時python默認按照新的局部變量來處理,但對于列表b而言,"b[0] = 1"不存在這種歧義,因此直接修改了全局變量,但是如果改成了"b = [3, 4]",那么b也會變成局部變量

特別地,當在func中a = 2之前加入"if a == 1:"這一語句,腳本運行出錯,因為這一語句引入了全局變量,導致了"a = 2"這一語句無法創建同名的局部變量。

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

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

a = 1
b = [2, 3]


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


if __name__ == '__main__':
    func()

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

跨文件共享全局變量

Python 中 global 關鍵字可以定義一個變量為全局變量,但是這個僅限于在一個模塊(py文件)中調用全局變量,在另外一個py文件 再次使用 global x 也是無法訪問到的,因為在這個py模塊中并沒有一個叫做x的變量,于是就會報錯 未定義。

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

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

設置全局變量  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

運行主程序文件   python main.py,得出的結果是  cc: 90

原理解釋

形式上全局變量在不同模塊中共享,其實還是遵循全局變量僅限于在一個模塊使用原則,a、b兩個模塊都有同樣的模塊引入

import globalvar as gl

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

import a
import b
import globalvar as gl

print(gl.get_value('name'))

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

到此,相信大家對“Python全局變量在不同模塊中共享的原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察哈| 广汉市| 镶黄旗| 桂东县| 靖西县| 开封县| 呼和浩特市| 乌鲁木齐市| 射洪县| 赞皇县| 菏泽市| 静宁县| 出国| 平湖市| 东方市| 灯塔市| 乐昌市| 永德县| 阿坝| 万全县| 秦皇岛市| 阿拉善右旗| 饶平县| 九寨沟县| 久治县| 通渭县| 柞水县| 宜宾县| 祁阳县| 铅山县| 绥中县| 望谟县| 太湖县| 桐乡市| 山阳县| 浦城县| 乌兰浩特市| 凤山市| 长泰县| 横山县| 阜南县|