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

发布于 2021-02-02 23:20:55

以下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

关注者
0
被浏览
133
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

    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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看