之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值。但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间。下面通过一个例子说明:
p=[0,1,2,3,4]
q=p
print(p)
print(q)
q.append(5)
print(q)
print(p)
#输出
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
发现改变q的值,p也同时改变。
如果要向C#中一样拷贝变量可以通过copy实现
import copy
p=[0,1,2,3,4]
q=copy.copy(p)
q.append(5)
print(q)
print(p)
输出
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4]