首頁 >後端開發 >Python教學 >如何修改巢狀 Python 函數內外在作用域中的變數?

如何修改巢狀 Python 函數內外在作用域中的變數?

Susan Sarandon
Susan Sarandon原創
2024-12-12 11:04:09533瀏覽

How Can I Modify Variables in Outer Scopes within Nested Python Functions?

修改外部作用域中的變數

封裝函數是Python 中的常見做法,但在存取和修改外部作用域中定義的變數時會帶來挑戰範圍。本文探討如何修改未全域定義但存在於封閉作用域中的變數。

Python 作用域和變數解析

Python 遵循詞法作用域,這表示變數是根據它們在原始程式碼中的位置來解決。外部作用域(封閉函數)可以存取在其巢狀作用域(內部函數)內定義的變量,但反之則不然。嘗試修改外部作用域中的變數而不將其宣告為全域變數會引發 UnboundLocalError。

修改外部作用域變數

在 Python 3 中,nonlocal 關鍵字提供了一個解。它允許在內部函數內修改變量,即使它們是在外部作用域中定義的。當變數被宣告為非局部變數時,Python 認為它綁定到外部作用域。

範例:

def outer():
    a = 5

    def inner():
        nonlocal a
        a += 1
        print(a)

outer()

輸出:

6

Python 2 解法

對於Python 2,對於沒有直接

def outer():
    a = []

    def inner():
        a.append(1)

inner()
inner()
print(a)
範例:

[1, 1]
輸出:

透過理解Python的作用域規則並使用適當的技術,可以存取和修改外部非全局作用域中的變量,從而促進封裝並實現理想的效果程序行為。

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

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