python中的连续赋值

Vor*_*rac -1 python variable-assignment

这样做是否合法

a = b = 3
Run Code Online (Sandbox Code Playgroud)

在python?如果是这样,这是一种不好的做法吗?

Ter*_*ryA 8

是的,请注意这样的事情:

a = b = []
a.append(2)
print a
print b
Run Code Online (Sandbox Code Playgroud)

打印:

[2]
[2]
Run Code Online (Sandbox Code Playgroud)

但除此之外,没关系.@Martijn在他的回答中有很多信息,所以请查看:).


Mar*_*ers 6

是的,这样做是合法的。不,这不是一个坏习惯。

只要考虑到右边,即值表达式,首先被求值,然后赋值从左到右进行;3首先分配给a,然后分配给b

分配声明文档中

赋值语句评估表达式列表(请记住,它可以是单个表达式或逗号分隔的列表,后者产生一个元组),并将单个结果对象从左到右分配给每个目标列表。

您将相同的值分配给所有目标。这意味着每个变量仅引用一个值。当该值是可变的(例如列表或字典)时,这一点很重要。