这段Python代码在做什么?

这段Python代码在做什么?,python,math,syntax,Python,Math,Syntax,下面是我发现的解决数学问题的Python代码片段。它到底在做什么?我不太确定谷歌搜索什么 x, y = x + 3 * y, 4 * x + 1 * y 这是一种特殊的Python语法吗 x, y = x + 3 * y, 4 * x + 1 * y 相当于: x = x + 3 * y y = 4 * x + 1 * y 除了在两次计算中都使用x和y的原始值之外,因为在两次计算完成之前,不会指定x和y的新值 一般形式为: x,y = a,b 其中a和b是表达式,其值分别指定给x和y。实

下面是我发现的解决数学问题的Python代码片段。它到底在做什么?我不太确定谷歌搜索什么

x, y = x + 3 * y, 4 * x + 1 * y
这是一种特殊的Python语法吗

x, y = x + 3 * y, 4 * x + 1 * y
相当于:

x = x + 3 * y
y = 4 * x + 1 * y
除了在两次计算中都使用x和y的原始值之外,因为在两次计算完成之前,不会指定x和y的新值

一般形式为:

x,y = a,b
其中a和b是表达式,其值分别指定给x和y。实际上,您可以将任何元组(逗号分隔值集)分配给任何大小相同的变量元组-例如

x,y,z = a,b,c
也可以,但是

w,x,y,z = a,b,c
不会,因为右侧元组中的值数量与左侧元组中的变量数量不匹配。

这是对一个变量的赋值,也称为序列解包。在元组周围添加括号可能会更清楚:

(x, y) = (x + 3 * y, 4 * x + 1 * y)
x+3*y
分配给
x
,值
4*x+1*y
分配给
y

这相当于:

x_new = x + 3 * y
y_new = 4 * x + 1 * y
x = x_new
y = y_new

我最近也看到了这种被称为“同时作业”的方法,它似乎抓住了几个答案的精神。

如果你把括号分为不同的组,可能更清楚:
x,y=(x+3*y),(4*x+1*y)
。逗号在这里很容易漏掉。啊,是的,括号清楚地表明了这一点——眼睛在[拍打前额]之前看不到它……我认为一个临时变量可以增加清晰度。希望你不要介意我实际上认为用强调的“除外”来解释这一点会更清楚地说明这一点,所以我回复了更改。无论如何,谢谢你努力改进,我只是碰巧在这件事上有不同的想法。:)这很有道理。看到它用括号括起来,就完全清楚了。很容易快速阅读,忽略了那个小细节。谢谢