0

我在终端中做了一些 python,在我写的时候x := 1,它显示了一个语法错误。

>>> x := 1
  File "<stdin>", line 1   
    x := 1
      ^
SyntaxError: invalid syntax

我知道海象运算符是一个表达式,但其他表达式工作得很好。

>>> 5 + 3 - 1
7 

甚至海象运算也在括号内工作。

>>> (x := 1)
1

所以我的问题是,为什么其他所有表达式都可以作为陈述有效,但海象却不是?

4

1 回答 1

2

来自 PEP 572,“例外情况”(强调我的):

在表达式语句的顶层禁止使用无括号的赋值表达式。例子:

y := f(x)  # INVALID
(y := f(x))  # Valid, though not recommended

包含此规则是为了简化用户在赋值语句和赋值表达式之间的选择——没有两个都有效的句法位置

在语法中排除简单的赋值表达式很简单。如果只禁止一些带括号的表达式(即那些包含赋值表达式的表达式),而仍然允许其他表达式,那就要复杂得多,这(y := f(x))就是有效的原因。

于 2021-10-06T12:29:19.627 回答