首頁 > 後端開發 > Python教學 > 為什麼在 Python 中會出現 UnboundLocalError?

為什麼在 Python 中會出現 UnboundLocalError?

Linda Hamilton
發布: 2024-12-05 22:20:17
原創
526 人瀏覽過

Why Do I Get an UnboundLocalError in Python?

UnboundLocalError:了解 Python 中的未綁定變數

在 Python 中,當局部變數在賦值之前被引用時,會發生 UnboundLocalError。與其他程式語言不同,Python 不需要顯式變數宣告。相反,變數在賦值時會綁定到值。

觸發UnboundLocalError 的一種方法是存取未賦值的變數:

>>> foobar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foobar' is not defined
登入後複製

另一種方法是當賦值運算無法執行時,例如就像在條件區塊中一樣:

def foo():
    if False:
        spam = 'eggs'
    print(spam)

>>> foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in foo
UnboundLocalError: local variable 'spam' referenced before assignment
登入後複製

在Python中,名稱透過各種操作綁定到值:賦值、函數參數、導入語句、異常處理程序和上下文管理器。當名稱綁定在函數作用域中時,它就成為局部變數。要存取函數內的全域變量,必須使用全域或非局部語句(在 Python 3 中)。

例如,以下函數嘗試存取全域變數foo 但失敗,因為它綁定在函數內範圍:

foo = None
def bar():
    if False:
        foo = 'spam'
    print(foo)

>>> bar()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in bar
UnboundLocalError: local variable 'foo' referenced before assignment
登入後複製

但是,使用全域foo 解決了這個問題:

foo = None
def bar():
    global foo
    if False:
        foo = 'spam'
    print(foo)

>>> bar()
None
登入後複製

理解變數的概念綁定對於避免Python 中的UnboundLocalErrors 至關重要。

以上是為什麼在 Python 中會出現 UnboundLocalError?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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