python分配_在python中分配

我知道python中的“变量赋值”实际上是一个名称(变量)与对象的绑定/重新绑定.

这带来了一个问题:是否可以在python中进行适当的赋值,例如使对象等于另一个对象?

我猜在python中没有必要:

>无法将“可分配对象”“分配给”,因为它们无法更改

>可以分配可变对象,因为它们可以更改,这可能很有用,因为您可能希望与原始对象分开处理字典副本.但是,在这些情况下,python哲学是在可变对象上提供克隆方法,因此您可以绑定副本而不是原始副本.

所以我猜答案是python中没有赋值,模仿它的最好方法是绑定到克隆对象

我只想分享这个问题,以防我在这里遗漏一些重要的事情

谢谢

编辑:

Lie Ryan和Sven Marnach的答案都很好,我想整体答案是两者兼而有之:

对于用户定义的类型,请使用成语:

a.dict = dict(b.dict)

(我想如果指定的类重新定义了属性访问方法,这也有问题,但不要挑剔:))

对于可变内置命令(列表和dicts),使用它们提供的克隆/复制方法(例如切片,更新)

最后无法更改的内置函数无法更改,因此无法分配

我会选择Lie Ryan,因为这是一个我没想过的优雅成语.

谢谢!

解决方法:

This brings the question: is it

possible to have proper assignment in

python, eg make an object equal to

another object?

是的你可以:

a.__dict__ = dict(b.__dict__)

将在C/C++中执行默认赋值语义(即执行浅层赋值).

这种广义分配的问题在于它永远不适合所有人.在C中,您可以覆盖赋值运算符,因为您总是需要选择是否需要完全浅层赋值,完全深度赋值或完全深度复制和完全浅复制之间的任何阴影.

标签:python

来源: https://codeday.me/bug/20190726/1544876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值