為什麼 Python 會拋出'UnboundLocalError”以及如何修復它?

Mary-Kate Olsen
發布: 2024-11-25 07:37:21
原創
978 人瀏覽過

Why Does Python Throw an

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板