Python中单行上的多个变量定义

Python中单行上的多个变量定义,python,Python,在python脚本中,我看到如下内容: someobject.name = name = otherobject.getname() 因为我不知道这是怎么叫的,所以很难用谷歌搜索它,尽管我认为如果你知道这个表达式的名字,这是微不足道的 有人能告诉我这是干什么用的吗?我的想法是先 name = otherobject.getname() 被称为,然后 someobject.name = name 但我不确定它是否是这样工作的,执行的顺序是否是这样。简短的回答:你是对的。正确的说法是“多重分配

在python脚本中,我看到如下内容:

someobject.name = name = otherobject.getname()
因为我不知道这是怎么叫的,所以很难用谷歌搜索它,尽管我认为如果你知道这个表达式的名字,这是微不足道的

有人能告诉我这是干什么用的吗?我的想法是先

name = otherobject.getname()
被称为,然后

someobject.name = name

但我不确定它是否是这样工作的,执行的顺序是否是这样。

简短的回答:你是对的。正确的说法是“多重分配”。这是第二次,但这对你来说可能也很有趣。这也会很有启发性。赋值语句计算表达式列表(请记住,这可以是单个表达式或逗号分隔列表,后者生成元组),并将单个结果对象从左到右分配给每个目标列表。@KevinGuan:实际上,不,它们不正确。赋值在计算右侧表达式后从左到右进行。因此,
temp=otherobject.getname()
,然后是
someobject.name=temp
,然后是
name=temp
@KevinGuan:请参阅一个依赖于该操作顺序的小脑筋急转弯。或者对任务顺序的误解会导致有趣的bug。