Python 中賦值之前引用的區域性變數

Muhammad Waiz Khan 2021年4月29日
Python 中賦值之前引用的區域性變數

本教程將說明為什麼會發生錯誤 local variable referenced before assignment 錯誤,以及如何解決該錯誤。

在函式體內在賦值之前引用了某個變數時,就會發生 local variable referenced before assignment。該錯誤通常在程式碼嘗試訪問全域性變數時發生。由於全域性變數具有全域性範圍,並且可以從程式中的任何位置進行訪問,因此使用者通常會嘗試在函式中使用全域性變數。

在 Python 中,我們不必在使用變數之前宣告或初始化該變數。預設情況下,始終將變數視為本地變數。因此,當程式嘗試訪問函式中的全域性變數而未將其指定為全域性變數時,程式碼將返回賦值之前引用的區域性變數錯誤,因為被引用的變數被視為區域性變數。

Python 中 local variable referenced before assignment 錯誤的解決方案

我們可以在 Python 中使用 global 關鍵字將變數宣告為全域性變數。一旦將變數宣告為全域性變數,程式就可以訪問函式中的變數,並且不會發生任何錯誤。

下面的示例程式碼演示了程式最終將出現 local variable referenced before assignment 錯誤的程式碼情況。

count = 10

def myfunc():
    count = count + 1
    print(count)
  
myfunc()

輸出:

UnboundLocalError: local variable 'count' referenced before assignment

我們需要使用 global 關鍵字將 count 變數宣告為全域性變數,以解決此錯誤。下面的示例程式碼演示瞭如何在上述程式碼方案中使用 global 關鍵字解決錯誤。

count = 10

def myfunc():
    global count
    count = count + 1
    print(count)
  
myfunc()

輸出:

11