【发布时间】:2021-10-06 12:17:42
【问题描述】:
我在终端上做一些 python,有一次我写了x := 1,它显示了一个语法错误。
>>> x := 1
File "<stdin>", line 1
x := 1
^
SyntaxError: invalid syntax
我知道海象运算符是一个表达式,但是其他表达式可以完美地工作。
>>> 5 + 3 - 1
7
即使是海象运算也可以在括号内工作。
>>> (x := 1)
1
所以我的问题是,为什么所有其他表达式都可以作为陈述有效,但海象却不是?
【问题讨论】:
-
赋值不是表达式
-
看看exceptional cases in PEP572。它解释了这种情况
-
因为这不是海象的用法,并且不鼓励海象在正常作业中使用。 PEP 说得很好。括号只是使海象上下文不作为独立行可见的一种方式。
-
@Chris 好吧,赋值表达式是 :) 但是语法明确禁止将赋值表达式用作表达式语句,如 PEP 中所述。
标签: python terminal walrus-operator