溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

python中的作用域有哪些

發(fā)布時(shí)間:2020-08-04 09:37:58 來(lái)源:億速云 閱讀:124 作者:清晨 欄目:編程語(yǔ)言

這篇文章主要介紹python中的作用域有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

python中的作用域有4種:

python中的作用域有哪些

搜索變量的優(yōu)先級(jí)順序依次是(LEGB):

作用域局部 > 外層作用域 > 當(dāng)前模塊中的全局 > python內(nèi)置作用域。

number = 10             # number 是全局變量,作用域在整個(gè)程序中
def test():
    print(number)
    a = 8               # a 是局部變量,作用域在 test 函數(shù)內(nèi)
    print(a)
test()

運(yùn)行結(jié)果:

10
8
def outer():
    o_num = 1          # enclosing
    i_num = 2          # enclosing
    def inner():
        i_num = 8      # local
        print(i_num)   # local 變量?jī)?yōu)先
        print(o_num)
    inner()
outer()

運(yùn)行結(jié)果:

8
1
num = 1
def add():
    num += 1
    print(num)
add()

運(yùn)行結(jié)果:

UnboundLocalError: local variable 'num' referenced before assignment

如果想在函數(shù)中修改全局變量,需要在函數(shù)內(nèi)部在變量前加上global關(guān)鍵字。

num = 1                    # global 變量
def add():
    global num             # 加上 global 關(guān)鍵字
    num += 1
    print(num)
add()

運(yùn)行結(jié)果:

2

同理,如果希望在內(nèi)層函數(shù)中修改外層的 enclosing 變量,需要加上 nonlocal 關(guān)鍵字

def outer():
    num = 1                  # enclosing 變量
    def inner():
        nonlocal num         # 加上 nonlocal 關(guān)鍵字
        num = 2
        print(num)
    inner()
    print(num)
outer()

運(yùn)行結(jié)果:

2
2

另外我們需要注意的是:

1.只有模塊、類(lèi)、及函數(shù)才能引入新作用域;

2.對(duì)于一個(gè)變量,內(nèi)部作用域先聲明就會(huì)覆蓋外部變量,不聲明直接使用,就會(huì)使用外部作用域的變量(這時(shí)只能查看,無(wú)法修改);

3.如果內(nèi)部作用域要修改外部作用域變量的值時(shí), 全局變量要使用 global 關(guān)鍵字,嵌套作用域變量要使用 nonlocal 關(guān)鍵字。

以上是python中的作用域有哪些的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI