我正在阅读 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 的值将首先分配,对吗?我错过了什么吗?
原文由 thiruvenkadam 发布,翻译遵循 CC BY-SA 4.0 许可协议
在进行任何赋值之前,赋值运算符右侧的所有表达式都会被求值。
来自 Python 教程:编程的第一步:
强调我的。
您的代码在功能上等同于以下代码: