首先…
a = 1
b = a
b = 2
print a
毋庸置疑, 输出结果为1, 因为我们的拷贝是创建了一个新的值为1的整型对象, 然后将b指向这个对象, 所以之后对b的修改不会影响a
那么这个呢…
a = [1]
b = a
b[0] += 1
print(a)
这个的输出并不是[1], 而是[2]! 也就是说, 列表在拷贝的时候, 并不会新建一个对象!
而如果改成这样就不会影响了
a = [1]
b = []
b += a
b[0] += 1
print(a)
首先…
a = 1
b = a
b = 2
print a
毋庸置疑, 输出结果为1, 因为我们的拷贝是创建了一个新的值为1的整型对象, 然后将b指向这个对象, 所以之后对b的修改不会影响a
那么这个呢…
a = [1]
b = a
b[0] += 1
print(a)
这个的输出并不是[1], 而是[2]! 也就是说, 列表在拷贝的时候, 并不会新建一个对象!
而如果改成这样就不会影响了
a = [1]
b = []
b += a
b[0] += 1
print(a)