首頁 >後端開發 >Python教學 >如何在Python中修改外部作用域中的非全域變數?

如何在Python中修改外部作用域中的非全域變數?

Barbara Streisand
Barbara Streisand原創
2024-12-16 12:06:15318瀏覽

How Can I Modify Non-Global Variables in Outer Scopes in Python?

在Python 中修改外部作用域中的非全域變數

在Python 中,函數內的變數通常屬於局部作用域,除非明確宣告為全域變數。但是,有時需要修改外部(封閉)但非全域範圍中定義的變數。這個問題探討如何實現這一點。

給出範例程式碼:

def A():
    b = 1
    def B():
        # Access to 'b' is possible here.
        print(b)
        # Direct modification of 'b' fails.
    B()
A()

函數 B 中的變數 b 駐留在非全域封閉範圍內。嘗試直接修改 b 會導致 UnboundLocalError。不能使用 global 關鍵字,因為 b 沒有在全域層級聲明。

Python 3 解:

非局部作用域(Python 3.x) 可以是用來解決此問題:

def A():
    b = 1
    def B():
        nonlocal b  # Nonlocal keyword
        b = 2
    B()
    print(b)  # Output: 2
A()

Python 2解決方案:

可變物件(Python 2.x):

不要直接重新分配變量,而是使用可變物件(例如列表、字典)並更改它們的值:

def A():
    b = []
    def B():
        b.append(1)  # Mutation of 'b'
    B()
    B()
    print(b)  # Output: [1, 1]
A()

以上是如何在Python中修改外部作用域中的非全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn