首頁 >後端開發 >Python教學 >為什麼我的 Python 程式碼在存取函數內的全域變數時會拋出「UnboundLocalError」?

為什麼我的 Python 程式碼在存取函數內的全域變數時會拋出「UnboundLocalError」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-23 03:35:14842瀏覽

Why Does My Python Code Throw an

未綁定局部錯誤:局部變數'c' 遮蔽全域作用域

在Python 中,理解函數內變數的賦值規則對於防止潛在的錯誤。當遇到「UnboundLocalError」時,有必要調查函數中指派的變數是否試圖掩蓋全域變數。

考慮以下程式碼:

a, b, c = (1, 2, 3)

def test():
    print(a)
    print(b)
    print(c)
    c += 1

執行此程式碼時,您將遇到源自「print(c)」行的錯誤。此錯誤訊息通常表示在 test() 函數的本地範圍內沒有分配“c”變數。

要解決此錯誤,您需要了解 Python 根據位置不同地對待函數中的變數他們被分配了。如果您嘗試為函數內的變數賦值,它就會成為局部變數。但是,在此程式碼中,您打算讓“c”保持全域。

要聲明test() 函數中的“c”變數引用全域變數“c”,您必須明確使用“函數開頭的“global”關鍵字:

def test():
    global c
    print(a)
    print(b)
    print(c)
    c += 1

透過加入“global c”,Python會識別出您打算使用全域「c」變數而不是本地變數。 c」而不是「global c」來引用最近的封閉變數擁有「c」變數的函數作用域。然而,值得注意的是,在日常Python 編碼中使用「nonlocal」通常不太常見。

以上是為什麼我的 Python 程式碼在存取函數內的全域變數時會拋出「UnboundLocalError」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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