python中的赋值、浅copy、深copy

1.可变对象和不可变对象:

  • 不可变对象:数字(int,float, double)、字符串、元组(tuple)、function等
  • 可变对象:字典(dict)、列表(list)、集合(set)、程序自定义的对象

2.赋值:实质就是传引用。

对于不可变对象:b=a ,a改变后,b不改变,因为a的值为不可变对象,a的值改变后,会新开辟一个地址,存放a的新值,a指向这个新值。

对于可变对象:b=a,a改变,b也改变。

3.浅拷贝:只拷贝父对象,不拷贝子对象。b=copy.copy(a),改变a的父对象,b不变,改变a的子对象,b跟着改变。

import copy
a=[1,2,3,[1,2]]
b=copy.copy(a)
a[0]=2
a[3].append(3)
print(a)
print(b)

[2, 2, 3, [1, 2, 3]]
[1, 2, 3, [1, 2, 3]]

4.深拷贝:父对象和子对象都拷贝,a和b随意怎么改变互不影响。

猜你喜欢

转载自www.cnblogs.com/ck-24/p/9334211.html
今日推荐