Python的逗号运算符在分配期间如何工作?
我正在阅读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的值?我想念什么吗?
-
在进行任何赋值之前,将评估赋值运算符右边的所有表达式。
第一行包含多个赋值:变量a和b同时获得新值0和1。在最后一行,再次使用它,表明 右侧的表达式在任何赋值之前都首先被求值发生
。右侧表达式从左到右计算。强调我的。
您的代码在功能上等同于以下代码:
a, b = 5 + 4, 5 print a, b