为什么Python可以实现a,b=b,a

时间:2021-06-18 02:09:21

标签: python

如果我们需要在 C 或 Java 中交换变量 ab,我们需要有一些东西(伪代码),例如:

tmp = a;
a = b;
b = tmp;

为什么 Python 可以通过 a, b = b, a 做到。发生了什么事?

不确定它是否适合这个问题。但如果有人能给我一些线索,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

这是因为python提供了许多其他语言所没有的特殊“元组解包”语法。我会分解正在发生的事情:

等号右边的 b, a 构成了一个元组(记住,元组和列表几乎一样,只是你不能修改它)。左边的 a, b 是解包元组的不同语法,即它获取元组中的第一项,并将其存储在列出的第一个变量中,然后获取第二项并将其存储在第二个变量中,等等。

这是分成多个步骤的样子:

a = 2
b = 3
my_tuple = a, b
print(my_tuple) # (2, 3)
b, a = my_tuple
print(a) # 3
print(b) # 2

这是另一个更简单的元组解包示例,只是为了帮助您理解它:

x, y, z = (1, 2, 3)
print(x) # 1
print(y) # 2
print(z) # 3

顺便说一句,Python 不是唯一的,Javascript 也可以,但使用数组:

[a, b] = [b, a];