我刚才偶然发现了这个问题,我不知道这是出于行为还是错误。请考虑以下代码:
global a,b;
a=[0,1,2];
b=a;
print("before:",a,b);
def c():
global a,b;
for i in range(3):
a.append(10+i);
c();
print("after:",a,b);
应该发生什么(至少根据对我来说似乎是合乎逻辑的)是python在附加过程中仅触及变量a
。相反,它决定与b
完全相同,即使我从未告诉它在追加循环中触及b
。 a
和b
之间是否存在某种隐藏关系?我在不知不觉中将它们设为全局,或者这是一个错误?
旁注:用c {中的global a,b;
替换global a;
给出了相同的输出。
我已尝试对字符串和整数使用+运算符执行相同操作,这似乎是.append函数所独有的,只是猜测。
我在Windows 10上的Python 3.5.0 x64上运行它