【发布时间】:2013-03-24 14:36:13
【问题描述】:
这有什么区别:
a, b = b, a+b
还有这个:
a = b
b = a+b
我正在尝试按照文档中的示例进行操作,而第一种形式(多重赋值语法)对我来说似乎很复杂。我试图用第二个例子来简化它,但它没有给出相同的结果。我清楚地解释了第一句话是错误的。我错过了什么?
【问题讨论】:
标签: python
这有什么区别:
a, b = b, a+b
还有这个:
a = b
b = a+b
我正在尝试按照文档中的示例进行操作,而第一种形式(多重赋值语法)对我来说似乎很复杂。我试图用第二个例子来简化它,但它没有给出相同的结果。我清楚地解释了第一句话是错误的。我错过了什么?
【问题讨论】:
标签: python
多重赋值评估右侧所有事物的值在更改左侧的任何值之前。
换句话说,区别在于:
a = 1
b = 2
a = b # a = 2
b = a + b # b = 2 + 2
对比这个:
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]
【讨论】:
tmp 变量来说明您的第二个示例
_tuple。