x=10, y=20
这是非常简短的代码,但当我在Python中执行此代码时,会出现“无法分配给文字”的错误。当然我很清楚这在Python中不能执行,这是不可能的。这段代码应该被更改为:
x,y=10,20
或者
x=10
y=20
就像这样。但我无法解释为什么第一段代码逻辑上是错误的。请帮助我!
x=10, y=20
这是非常简短的代码,但当我在Python中执行此代码时,会出现“无法分配给文字”的错误。当然我很清楚这在Python中不能执行,这是不可能的。这段代码应该被更改为:
x,y=10,20
x=10
y=20
就像这样。但我无法解释为什么第一段代码逻辑上是错误的。请帮助我!
x=10, y=20
意味着x=10; y=20
,实际上它意味着x=(10, y)=20
。这是因为逗号创建了一个元组,而你不能给包含字面量(在本例中为10
)的元组赋值。Python 用这个做什么:
A, B = C, D
它将第一个值分配给第一个变量,将第二个值分配给第二个变量:
A = C
B = D
(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
你会遇到相同的错误。
some_variable = some_literal,
的意思是:(some_literal,)
。 - JacobIRR