WoJ*_*WoJ 12 python python-3.x walrus-operator
PEP 572引入了赋值运算符(“海象运算符”)。
以下代码有效并输出empty
def say_empty():
return ''
if a := say_empty():
print("not empty")
else:
print("empty")
Run Code Online (Sandbox Code Playgroud)
我试图否定这个条件:
def say_empty():
return ''
if not a := say_empty():
print("empty")
else:
print("not empty")
Run Code Online (Sandbox Code Playgroud)
这就提出了一个SyntaxError
if not a := say_empty():
^
SyntaxError: cannot use assignment expressions with operator
Run Code Online (Sandbox Code Playgroud)
给定的错误很明显,但是我想知道为什么要实施此限制。
PEP 572 解释了为什么在迭代中使用赋值会出现问题(并引发SyntaxError
),但我没有找到任何有关布尔值的信息。
khe*_*ood 22
运算符优先级表示 的:=
优先级低于not
。Sonot a :=
被解读为尝试分配给not a
,因此出现语法错误。
您可以使用括号来阐明含义:
if not (a := say_empty()):
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2235 次 |
最近记录: |