赋值操作(包括对象作为参数、返回值)不会开辟新的内存空间,它只是复制了新对象的引用。
直接赋值举例:
s1=[4,5,6]
s2=s1
s1[1]=0
print(s2)
# 结果:
[4, 0, 6]
原因是:s2=s1语句将s1的地址赋给了s2。
我们可以来验证一下:
s1=[4,5,6]
print(id(s1))
s2=s1
print(id(s2))
s1[1]=0
print(s1)
print(s2)
#结果:
1863134277768
1863134277768
[4, 0, 6]
[4, 0, 6]
s1,s2地址相同,指向同一片内存。
修改了s1,就影响了s2;同理,修改了s2就影响了s1。