Python的逗号运算符在分配期间如何工作?

发布于 2021-01-29 19:10:36

我正在阅读Python文档(http://docs.python.org/reference/simple_stmts.html#assignment-
statements
)中的赋值语句。

在其中引用:

如果目标是用括号或方括号括起来的目标列表:该对象必须是可迭代的,并且具有与目标列表中存在目标的项目数量相同的项目,并且其项目从左到右分配给相应的项目。目标。

阅读之后,我想到了编写这样的示例:

a = 5
b = 4
a, b = a + b, a
print a, b

我的假设是a和b的值都应为9。

但是,事实证明我错了。’a’的值为9,’b’的值为5。

有人可以帮助我更好地理解这一点吗?为什么要分配旧值“ a”而不是新值?根据文档,将首先分配a的值?我想念什么吗?

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

    在进行任何赋值之前,将评估赋值运算符右边的所有表达式。

    Python教程中:编程的第一步

    第一行包含多个赋值:变量a和b同时获得新值0和1。在最后一行,再次使用它,表明 右侧的表达式在任何赋值之前都首先被求值发生
    。右侧表达式从左到右计算。

    强调我的。

    您的代码在功能上等同于以下代码:

    a, b = 5 + 4, 5
    print a, b
    


知识点
面圈网VIP题库

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

去下载看看