python元组分配顺序是否已修复?

时间:2016-10-04 14:49:59

标签: python tuples variable-assignment

威尔

a, a = 2, 1

总是会导致等于1?换句话说,元组赋值是保证从左到右吗?

当我们没有a,但a [i],a [j]和i和j可能相等或不相等时,这个问题就变得相关了。

2 个答案:

答案 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