首頁  >  文章  >  後端開發  >  如何從 Python 中的巢狀函數存取非局部變數?

如何從 Python 中的巢狀函數存取非局部變數?

DDD
DDD原創
2024-10-21 18:38:29825瀏覽

How to Access Nonlocal Variables from Nested Functions in Python?

存取巢狀函數作用域中的非局部變數

在Python 中,巢狀函數作用域提供對封閉作用域的訪問。但是,嘗試修改巢狀函數內封閉範圍內的變數可能會導致 UnboundLocalError。

要解決此問題,您有多種選擇:

1。使用「nonlocal」關鍵字 (Python 3 ):

對於 Python 3 及更高版本,nonlocal 關鍵字可讓您在巢狀函數中重新綁定非局部變數。

<code class="python">def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr += 1

    inner()</code>

2.透過清單間接存取(Python 2 和3):

在Python 2 和3 中,您可以使用清單來保存變數並在巢狀函數中間接遞增它。

<code class="python">ctr = [0]

def inner():
    ctr[0] += 1</code>

3.使用全域變數(不建議):

雖然使用全域可以允許從封閉範圍存取變量,但由於潛在的衝突和程式碼可讀性問題,通常不鼓勵這樣做。

<code class="python">def outer():
    global ctr
    ctr = 0

    def inner():
        ctr += 1</code>

選擇合適的解決方案取決於您的特定 Python 版本以及程式碼的設計注意事項。

以上是如何從 Python 中的巢狀函數存取非局部變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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