Python 中的錯誤:「UnboundLocalError: 賦值前引用的局部變數」
當您遇到此錯誤時,這是因為您試圖在初始化或定義之前存取局部變數。讓我們探討一下導致此問題的程式碼:
Var1 = 1 Var2 = 0 def function(): if Var2 == 0 and Var1 > 0: print("Result 1") elif Var2 == 1 and Var1 > 0: print("Result 2") elif Var1 < 1: print("Result 3") Var1 -= 1 function()
此程式碼在函數 function() 之外定義了兩個變數 Var1 和 Var2。在函數內,我們嘗試操作 Var1,這很好。然而,當我們訪問 Var1 而不在函數作用域內初始化它時,就會出現問題。
使用全域變數的解:
要解決這個問題,我們可以將 Var1 宣告為函數內的全域變數。這告訴 Python 使用函數外部定義的 Var1,而不是在函數內部建立新的局部變數。要實現此目的,請在函數的開頭添加以下行:
global Var1
替代解決方案:使用非局部變數:
Python 3 引入了非局部語句,它允許您修改在封閉範圍內定義的變數。我們可以在函數中使用以下程式碼,而不是將Var1 宣告為全域變數:
nonlocal Var1 Var1 -= 1
結論:
當您嘗試引用a 時會發生UnboundLocalError尚未初始化或定義的局部變數。若要解決此問題,您可以將變數宣告為全域變量,或使用 nonlocal 關鍵字存取封閉範圍中定義的變數。
以上是為什麼 Python 會拋出'UnboundLocalError”以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!