“无法分配给文字”是什么意思python?

时间:2019-09-29 01:56:03

标签: python

x=10, y=20

这确实是短代码,但是当我在python中执行此代码时,出现“无法分配给文字”错误。当然,我知道这不能凭直觉在pyhon中执行,这是毫无疑问的。该代码应更改为

x,y=10,20

x=10
y=20

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

python对此做了什么:

A, B = C, D

它将第一个值分配给第一个变量,第二个值分配给第二个变量:

A = C
B = D

之所以有用,是因为python在内部用逗号分隔您的值来生成“元组”:

(A, B) = (C, D)

这样做的时候

A = C, B = D

Python认为您正在这样做:

A = (C, B) = D

或者:

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

但是在您的情况下,C是数字,而不是变量,所以:

x = 10, y = 20

是:

x = (10, y) = 20

或者:

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

这是不可能的。您不能为数字(10)分配内容。进行10 = 'something'会给您SyntaxError: can't assign to literal

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

10 = 1

您将遇到相同的错误。