日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Python全局變量關(guān)鍵字global的簡(jiǎn)單使用_python

作者:玩轉(zhuǎn)測(cè)試開發(fā) ? 更新時(shí)間: 2022-08-14 編程語(yǔ)言

簡(jiǎn)介:

1、global是Python中的全局變量關(guān)鍵字。

2、全局變量是編程術(shù)語(yǔ)中的一種,源自于變量之分。

3、變量分為局部與全局,局部變量又可稱之為內(nèi)部變量。

4、由某對(duì)象或某個(gè)函數(shù)所創(chuàng)建的變量通常都是局部變量,只能被內(nèi)部引用,而無(wú)法被其它對(duì)象或函數(shù)引用。

5、全局變量既可以是某對(duì)象函數(shù)創(chuàng)建,也可以是在本程序任何地方創(chuàng)建。全局變量是可以被本程序所有對(duì)象或函數(shù)引用。

6、global關(guān)鍵字的作用是可以使得一個(gè)局部變量為全局變量。

案例1:全局無(wú)法使用局部變量。

# -*- coding: utf-8 -*-
def test1():
    # 局部變量 local
    local_var = "a"
    print(local_var)

# 全局無(wú)法使用局部變量,只有對(duì)應(yīng)的局部作用域可用
# print(local_var)  # NameError: name 'local_var' is not defined

案例2:全局變量,任意范圍均可使用。

global_var = 1


def test2():
    # 函數(shù)內(nèi)使用全局變量
    print(global_var + 1)

    def inner():
        # 嵌套函數(shù)內(nèi)使用全局變量
        print(global_var + 2)

    return global_var + 3  # 返回值內(nèi)使用全局變量


# 函數(shù)外使用全局變量。
print(global_var)

案例3:函數(shù)內(nèi)定義的局部變量

def test3():
    # 函數(shù)內(nèi)變量,但對(duì)于下級(jí)函數(shù)就是全局變量,對(duì)于外部來(lái)說就是局部變量
    func_var = 1
    def inner():
        print(func_var)
        return func_var
    return inner()

test3()

案例4:函數(shù)間global關(guān)鍵字的作用

def test4():
    # global關(guān)鍵字作用
    global func_var
    func_var = 2

    # 調(diào)用test5可以打印 func_var,去掉global會(huì)報(bào)錯(cuò)。
    test5()
    print(test5.__globals__)


def test5():
    print(func_var)


test4()

案例5:不同文件模塊中的global,注意test6, test7為不同文件。

# a.py
def test6():
    # global關(guān)鍵字作用
    global func_var
    func_var = 3
    

# b.py
from a import test6


def test7():
    print(test6.__globals__["func_var"])


# 不先執(zhí)行test6的情況下會(huì)拋出異常。KeyError: 'func_var'
test7()  # KeyError: 'func_var'

案例6:不同文件模塊中的global,注意test6, test7為不同文件。

# a.py
def test6():
    # global關(guān)鍵字作用
    global func_var
    func_var = 4
    

# b.py
from a import test6


def test7():
    print(test6.__globals__["func_var"])


# 先執(zhí)行test6的情況下,test可以使用 func_var
test6()
test7()  # 4

附:用global聲明多個(gè)變量需要用逗號(hào)分

num = 0
def cc():
 global count,num
 count = count+1
 num = num+2
 print(count,num)
cc()
3 2
# 可以函數(shù)中的global聲明能夠修改全局變量
num
Out[24]: 2
# 
count
Out[25]: 3
在使用全局變量的場(chǎng)合,也可用類變量代替
class C:
 count = 3
def cc():
 count = C.count+1
 print(count)
cc()
4

結(jié)論:

1、只導(dǎo)入包,global定義的全局變量沒有被加到globals里面。

2、執(zhí)行g(shù)lobal所在的對(duì)應(yīng)函數(shù),global定義的函數(shù)內(nèi)會(huì)存入對(duì)應(yīng)變量,其他函數(shù)內(nèi)則不會(huì)存入。

原文鏈接:https://blog.csdn.net/hzblucky1314/article/details/122724678

欄目分類
最近更新