Python 閉包中的 UnboundLocalError 解釋
問題中描述的情況圍繞 Python 中稱為變量作用域的基本概念。與具有顯式變數宣告的語言不同,Python 根據賦值來決定變數範圍。
考慮以下程式碼:
counter = 0 def increment(): counter += 1 increment()
此程式碼引發 UnboundLocalError。為什麼?
在 Python 中,函數內的賦值將變數標記為該函數的本地變數。 increment() 函數中的行 counter = 1 表示 counter 是局部變數。但是,此行嘗試在分配局部變數之前存取它,從而導致 UnboundLocalError。
要避免此問題,您有多種選擇:
counter = 0 def increment(): global counter counter += 1
def outer(): counter = 0 def inner(): nonlocal counter counter += 1
透過利用這些技術,你可以正確地操作 local和閉包中的全域變量,避免不必要的錯誤。
以上是為什麼 Python 函數內的 `counter = 1` 會導致 `UnboundLocalError`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!