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

Pet*_*sma 2 python tuples variable-assignment

a, a = 2, 1
Run Code Online (Sandbox Code Playgroud)

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

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

Jam*_*mes 8

是的,它是python语言参考的一部分,元组赋值必须从左到右进行.

https://docs.python.org/2.3/ref/assignment.html

赋值语句计算表达式列表(请记住,这可以是单个表达式或以逗号分隔的列表,后者产生元组)并从左到右将单个结果对象分配给每个目标列表.

因此,所有Python实现都应遵循此规则(正如其他答案中的实验所证实).

就个人而言,我仍然会犹豫是否使用它,因为对于未来的代码读者来说似乎并不清楚.


MMF*_*MMF 1

怎么运行的 :

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
Run Code Online (Sandbox Code Playgroud)

当你有不同的变量时,它的工作方式完全相同:

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
Run Code Online (Sandbox Code Playgroud)