“cannotassigntoliteral”是什么意思?

2024-06-16 08:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

x=10, y=20

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

x,y=10,20

或者

x=10
y=20

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


Tags: 代码错误逻辑pyhon无法解释帮帮我cannotassigntoliteral
2条回答

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

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

你也会犯同样的错误。你知道吗

相关问题 更多 >