这个表达式是做什么的:(x, y) = (y, x % y)?

What does this expression do: (x, y) = (y, x % y)?

我看到下面的代码,但不知道它的作用。

(x, y) = (y, x % y)

一开始我认为是这样的:

x=y
y=x%y

但我发现我不对。 有人可以解释一下 (x, y) = (y, x % y) 的作用吗?

你说得对,它按照你的想法行事。 x 被赋予 y 的值,y 被赋予 x%y

的值

示例:

>>> x=5
>>> y=10
>>> (x, y) = (y, x % y)
>>> x
10
>>> y
5
>>> 

x变为10(即y的值) y 变成 x%y= 5%10 =5

它被称为元组assignment/unpacking,要线性复制它,你需要一个临时位置来存储x的值。

更等价于:

temp=x
x=y
y=temp%y

它这样做:

t1 = y
t2 = x % y
x = t1
y = t2
del t1, t2

除了变量 t1t2 实际上从未存在过。换句话说,它根据 值计算分配给 xy 的新值,并同时更改两者。

我这里没有确切的术语。

(x, y) = (y, x % y) 正在同时进行 x=y, y=x%y。如果你按顺序 运行 这两行,你就是将 y 的值传递给 x 进行除法。