Python 什么是';can';t分配给文字';你是说蟒蛇?

Python 什么是';can';t分配给文字';你是说蟒蛇?,python,Python,这是一段很短的代码,但当我在python中执行这段代码时,会出现“cannotassigntoliteral”错误。当然,我知道这不能仅仅凭直觉在pyhon中执行,这是毫无疑问的。此代码应更改为 x=10, y=20 或 像这样。但是我无法解释为什么第一个代码在逻辑上是错误的。请帮帮我 你的错误是你认为x=10,y=20意味着x=10;y=20实际上它的意思是x=(10,y)=20。这是因为逗号创建了一个元组,而您不能将其分配给包含文字的元组(在本例中为10)。python如何处理此问题: x

这是一段很短的代码,但当我在python中执行这段代码时,会出现“cannotassigntoliteral”错误。当然,我知道这不能仅仅凭直觉在pyhon中执行,这是毫无疑问的。此代码应更改为

x=10, y=20


像这样。但是我无法解释为什么第一个代码在逻辑上是错误的。请帮帮我

你的错误是你认为
x=10,y=20
意味着
x=10;y=20
实际上它的意思是x=(10,y)=20。这是因为逗号创建了一个元组,而您不能将其分配给包含文字的元组(在本例中为
10
)。

python如何处理此问题:

x=10
y=20
它将第一个值指定给第一个变量,将第二个值指定给第二个变量:

A, B = C, D
这是因为python在内部使用逗号分隔的值生成“元组”:

A = C
B = D
当你这样做的时候

(A, B) = (C, D)
Python相信您正在做:

A = C, B = D
或:

但是
C
在您的案例中是一个数字,而不是一个变量,因此:

(C, B) = D   # Which is C = D[0] and B = D[1]
A = (C, B)
是:

或:

这是不可能的。您不能将某些内容分配给数字(
10
)。执行
10='something'
将给您
SyntaxError:无法分配到literal

为了简化,只需在python控制台中执行:

(10, y) = 20
x = (10, y)

你也会有同样的错误。

表达式
some\u variable=some\u literal,
使:
(some\u literal,)
(C, B) = D   # Which is C = D[0] and B = D[1]
A = (C, B)
x = 10, y = 20
x = (10, y) = 20
(10, y) = 20
x = (10, y)
10 = 1