a = b = c和以编程方式分别分配有什么区别?

时间:2017-07-17 06:41:58

标签: python python-3.x syntax

之间有什么区别:

a=b=c

b = c
a = c
在python中

? 口译员会以不同的方式阅读这些内容吗?

当我使用第一种/第二种方法时,如果它有副作用,那么副作用是什么?

2 个答案:

答案 0 :(得分:2)

对于您未来的Google搜索,这被称为"链接任务"或"嵌套作业"。如this answer所示,链式赋值对于强制解释器仅评估右手表达式一次非常有用。例如:

a = b = myComputeHeavyFunc()  # Only one evaluation

只会评估myComputeHeavyFunc()一次,因为多线解决方案会对函数进行两次评估,从而导致性能下降:

a = myComputeHeavyFunc()  # One evaluation
b = myComputeHeavyFunc()  # Another evaluation

答案 1 :(得分:1)

如果c是现有对象,则两段代码都具有相同的效果,将ab绑定到同一现有对象。

如果c是文字,那么第一个将它们绑定到同一个对象,而第二个将创建两个单独的对象(对于某个值"创建";差异仅对于可变对象)并将它们绑定到每个名称。