“can't assign to literal”是什么意思Python?

3
x=10, y=20

这是非常简短的代码,但当我在Python中执行此代码时,会出现“无法分配给文字”的错误。当然我很清楚这在Python中不能执行,这是不可能的。这段代码应该被更改为:

x,y=10,20

或者
x=10
y=20

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


表达式 some_variable = some_literal, 的意思是:(some_literal,) - JacobIRR
2个回答

6
你的错误是认为x=10, y=20意味着x=10; y=20,实际上它意味着x=(10, y)=20。这是因为逗号创建了一个元组,而你不能给包含字面量(在本例中为10)的元组赋值。

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

你会遇到相同的错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接