为什么python会自我修改全局变量?

时间:2016-01-04 00:24:24

标签: python python-3.x global-variables

我刚才偶然发现了这个问题,我不知道这是出于行为还是错误。请考虑以下代码:

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完全相同,即使我从未告诉它在追加循环中触及bab之间是否存在某种隐藏关系?我在不知不觉中将它们设为全局,或者这是一个错误?

旁注:用c {中的global a,b;替换global a;给出了相同的输出。

我已尝试对字符串和整数使用+运算符执行相同操作,这似乎是.append函数所独有的,只是猜测。

我在Windows 10上的Python 3.5.0 x64上运行它

0 个答案:

没有答案