python一个列表变量值赋值给另外一个列表变量相当于c++的引用吗
比如下面代码 d赋值给d2,d怎么变d2就怎么变,变顺序变参数都一样>>> d=
>>> d2=d
>>> d2
>>> d.sort()
>>> d2
>>> d.reverse()
>>> d2
>>> d.sort()
>>> d2
>>> d.append(100)
>>> d2
>>>
对可变类型的对象(列表,字典,集合)进行赋值会共用内存地址,类似c++中的引用 嗯,这是对象类型而不是基本类型。 import copy
d =
d2 = copy.deepcopy(d)
d = 3
print(d)
print(d2)
基本数据类型与引用数据类型,你可以看看 用 d2=d[:] 也可以得到一份copy 差不多的意思。d和d2都指向同一个对象,《流畅的Python》一书中将其称为便利贴(变量贴在对象上)。id(d) == id(d2)。由于列表是可变数据类型,有些操作会就地修改对象,这样指向对象的变量就会都共享这次更改。而如果是不可变类型(如tuple),部分操作没法改变原有对象,只能新建一个对象将结果存入。此时id(d)!=id(d2)
页:
[1]