在 Python 中遇到 UnboundLocalError 時,了解變數賦值相對於全域宣告的優先權至關重要。讓我們使用提供的程式碼深入研究具體細節:
a, b, c = (1, 2, 3) def test(): print(a) print(b) print(c) c += 1 test()
在探索錯誤之前,讓我們先解決「a」和「b」的成功列印問題。對於這些變量,在 'test()' 函數中沒有賦值,因此 Python 將它們視為全域變量,並從外部作用域中檢索它們的值。
但是,當在內部為 'c' 賦值時函數 ('c = 1') 中,Python 建立一個名為 'c' 的局部變數。此局部變數會覆寫全域“c”,並且函數內對“c”的任何後續引用都將引用本機版本。因此,當執行“print(c)”行時,它會嘗試列印未分配的局部變量,從而導致“UnboundLocalError”。
要解決此問題,可以明確聲明使用全域變數透過新增「global c」作為第一行,在「test()」函數中新增「c」變數。或者,在 Python 3 中,「nonlocal c」可用於存取包含名為「c」的變數的最近的封閉函數作用域。
以上是為什麼Python在修改函數內部的全域變數時會拋出「UnboundLocalError」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!