威尔
a, a = 2, 1
总是会导致等于1?换句话说,元组赋值是保证从左到右吗?
当我们没有a,但a [i],a [j]和i和j可能相等或不相等时,这个问题就变得相关了。
答案 0 :(得分:8)
是的,它是python语言参考的一部分,元组赋值必须从左到右进行。
https://docs.python.org/2.3/ref/assignment.html
赋值语句评估表达式列表(请记住 这可以是单个表达式或以逗号分隔的列表,后者 产生一个元组)并将每个结果对象分配给每一个 目标列表,从左到右。
因此,所有Python实现都应遵循此规则(正如其他答案中的实验所证实的那样)。
就个人而言,我仍然会犹豫是否使用它,因为对于未来的代码读者来说似乎并不清楚。
答案 1 :(得分:0)
工作原理:
a, a = 2, 1
--> a does not exist, create variable a and set value to 2
--> a already exists, value of a changed to 1
当你有不同的变量时,它的工作方式完全相同:
a, b, a = 1, 2, 3
--> a does not exist, create variable a and set value to 1
--> b does not exist, create variable b and set value to 2
--> a already exists, value of a changed to 3