a = [1]
def do():
global a
b=a
print b
a[0] = 2
print b
do()
输出:1 2
我很确定这与“a”是一个全局列表这一事实有关。有人可以向我解释为什么全局变化时变量 b 会发生变化。我怎么可能阻止它发生?
问题的扩展:您将如何处理进一步的嵌套,例如:
a = []
b = []
def do():
global a, b
b.append(a[:])
print a, b
a[0][0] +=1
print a, b
a.append([1])
do()