python正确的赋值语句可以有小数吗_Python赋值语句与深拷贝、浅拷贝的区别

正常赋值语句会使左操作数简单地指向右操作数指向的对象。

深拷贝和浅拷贝之间的区别仅对复合变量起作用,复合变量指的是对象中又包含了对象,如list,class,dict。

一次浅拷贝会构造一个新的复合对象,然后将原始对象中的所有引用插入到新的复合对象中。

一次深拷贝也会构造一个新的复合对象,但会递归地将原始对象中的所有对象拷贝一份到新的复合对象中。

对于非复合变量, 赋值语句,深拷贝,浅拷贝都实现的是赋值语句功能。

例子:

import copy

a = [1, 2, 3]

d = [4, 5, 6]

c = [a, b]

如果使用正常赋值语句:

d = c

print id(c) == id(d)# True - d和c指向同一个对象

print id(c[0]) == id(d[0])# True - d[0]和c[0]当然也是同一对象

使用浅拷贝的话:

d = copy.copy(c)

print id(c) == id(d)# False - d是一个新对象,浅拷贝会构造一个新的复合对象

print id(c[0]) == id(d[0])# True - 但复合对象中的对象不会复制,和原来的指向一样

使用深拷贝的话:

d = copy.deepcopy(c)

print id(c) == id(d)# False - d同一是个全新的复合对象

print id(c[0]) == id(d[0])# False - 复合对象中对象也同样进行拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值