x=10, y=20
这确实是短代码,但是当我在python中执行此代码时,出现“无法分配给文字”错误。当然,我知道这不能凭直觉在pyhon中执行,这是毫无疑问的。该代码应更改为
x,y=10,20
或
x=10
y=20
像这样。但我无法解释为什么第一个代码是逻辑上错误。请帮助我!
答案 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
您将遇到相同的错误。