在Python 2.7中运行以下代码:
以下是结果:
我遇到了不同的错误:
为什么Python认为
P.S.:我在阅读这篇帖子后进行了一些实验。
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()
我遇到了不同的错误:
Traceback (most recent call last):
File "test.py", line 4, in <module>
f()
File "test.py", line 2, in f
a[0] = a[0] + 1
NameError: global name 'a' is not defined
为什么Python认为
a
是局部变量,但当它是int
类型时是全局变量,而当它是list
类型时又是局部变量呢?这背后的原理是什么?P.S.:我在阅读这篇帖子后进行了一些实验。