了解Python中的多个赋值

时间:2013-04-03 04:09:59

标签: python

这有什么区别:

a, b = b, a+b

而且:

a = b
b = a+b

我试图按照文档中的示例进行操作,第一种形式(多重赋值语法)对我来说似乎很复杂。我尝试用第二个例子简化它,但它没有给出相同的结果。我清楚地解释了第一个错误的陈述。我错过了什么?

1 个答案:

答案 0 :(得分:5)

在更改左侧的任何值之前,多个赋值会评估右侧所有的值。

换句话说,区别在于:

a = 1
b = 2
a = b                  # a = 2
b = a + b              # b = 2 + 2

VS。这样:

a = 1
b = 2
a, b = b, a + b        # a, b = 2, 1 + 2

另一种思考方式是它相当于构造一个元组然后再解构它(实际上正是这样,除非没有明确的中间元组):

a = 1
b = 2
_tuple = (b, a+b)
a = _tuple[0]
b = _tuple[1]