之间有什么区别:
a=b=c
和
b = c
a = c
在python中? 口译员会以不同的方式阅读这些内容吗?
当我使用第一种/第二种方法时,如果它有副作用,那么副作用是什么?
答案 0 :(得分:2)
对于您未来的Google搜索,这被称为"链接任务"或"嵌套作业"。如this answer所示,链式赋值对于强制解释器仅评估右手表达式一次非常有用。例如:
a = b = myComputeHeavyFunc() # Only one evaluation
只会评估myComputeHeavyFunc()
一次,因为多线解决方案会对函数进行两次评估,从而导致性能下降:
a = myComputeHeavyFunc() # One evaluation
b = myComputeHeavyFunc() # Another evaluation
答案 1 :(得分:1)
如果c
是现有对象,则两段代码都具有相同的效果,将a
和b
绑定到同一现有对象。
如果c
是文字,那么第一个将它们绑定到同一个对象,而第二个将创建两个单独的对象(对于某个值"创建";差异仅对于可变对象)并将它们绑定到每个名称。