有这样一个函数:
def outside():
x=[]
print(id(x))
def inside():
print(id(x))
x[:]=[1,2,3]
print(id(x))
inside()
print(id(x))
print(x)
调用后没出现问题,输出:
140560473157960
140560473157960
140560473157960
140560473157960
[1, 2, 3]
但是将里面的x换成一个字符串,如下:
def outside():
x='outside'
print(id(x))
def inside():
print(id(x))
x='inside'
print(id(x))
inside()
print(id(x))
print(x)
再来进行调用的时候就变成了:
140560473762872
Traceback (most recent call last):
File "", line 1, in
File "", line 8, in outside
File "", line 5, in inside
UnboundLocalError: local variable 'x' referenced before assignment
按照规则,此时进入inside函数里,为什么x不指向原来的'outside'字符串了呢?
未定义的变量不是应该产生NameError吗,为什么此处不是?
我原来以为字符串和list都是类似于C中的指针,但现在看来不是这样,如果可以的话希望能对这一点进行一些介绍,谢谢。