python中带逗号的多个赋值

时间:2016-01-05 20:54:14

标签: python

我试图找到this的解释,即Gotcha部分:

b = "1984"
a = b, c = "AB"
print(a, b, c)

返回:

('AB', 'A', 'B')

我理解多个等于会发生什么:

a = b = 1

但是将它与逗号一起使用,我无法理解它的行为,为什么它的工作原理?

3 个答案:

答案 0 :(得分:12)

答案是

a = b, c ="AB"

表现得像:

a = (b, c) = "AB"

这就是原因:

a = "AB" and b = "A" and c = "B"

答案 1 :(得分:0)

a = b, c = "AB" 

不会以您认为的方式解释。你确实有一个多重赋值,但它不是a = b和c =" AB"。它是c,b =" AB"和a =" AB"。在python中

x = y = z = 1

被解释为x,y和z得到赋值1.而逗号用于将值列表解包为单个变量,因此b,c =" AB"解包" AB"进入" A"和" B"。所以在这一行的最后,

a = b, c = "AB"
a == "AB" 
b == "A"
c == "B"

答案 2 :(得分:-2)

这归结为操作顺序,第2行实际上是两个不同的陈述。

a = b

首先完成。然后

b, c = "AB"

正在解包“AB”的值,并将“A”分配给b,将“B”分配给c。