在Python 2.7,運行下面的代碼:Python的全局和局部變量
def f():
a = a + 1
f()
給出以下結果:
Traceback (most recent call last):
File "test.py", line 4, in <module>
f()
File "test.py", line 2, in f
a = a + 1
UnboundLocalError: local variable 'a' referenced before assignment
但是,如果我的代碼更改爲以下:
def f():
a[0] = a[0] + 1
f()
我得到了不同的錯誤:
爲什麼Python考慮a
是一個局部變量,當它是一個int
,全局是list
?這背後的理由是什麼?
P.S .:我在閱讀this thread後進行了實驗。
我認爲這個錯誤與g中的賦值無關。我編輯了刪除無關語句的問題。 – fossilet 2013-03-24 03:52:00
@fossilet - 道歉,我誤以爲你的問題 - 我更新了我的答案,讓我知道它是否有幫助。 – 2013-03-24 04:39:30