Python中的多个分配和评估顺序

以下Python表达式之间有什么区别:

# First:

x,y = y,x+y

# Second:

x = y

y = x+y

第一给出的结果与第二给出的结果不同。

例如,

第一:

>>> x = 1

>>> y = 2

>>> x,y = y,x+y

>>> x

2

>>> y

3

第二:

>>> x = 1

>>> y = 2

>>> x = y

>>> y = x+y

>>> x

2

>>> y

4

y是第一的 3 和第二的 4

回答:

在赋值语句中,总是在对变量进行实际设置之前先对右侧进行全面评估。所以,

x, y = y, x + y

评估板y(我们称之为的结果ham),评估x + y(呼叫spam),然后设置xham和y到spam。也就是说,就像

ham = y

spam = x + y

x = ham

y = spam

相比之下,

x = y

y = x + y

设置x为y,然后设置y为x(which == y)plus y,因此等效于

x = y

y = y + y

以上是 Python中的多个分配和评估顺序 的全部内容, 来源链接: utcz.com/qa/408801.html

回到顶部