PEP 572引入赋值运算符(“walrus运算符”)
下面的代码工作,并输出empty
def say_empty():
return ''
if a := say_empty():
print("not empty")
else:
print("empty")
我试图否定这个条件:
def say_empty():
return ''
if not a := say_empty():
print("empty")
else:
print("not empty")
这引起了SyntaxError
if not a := say_empty():
^
SyntaxError: cannot use assignment expressions with operator
给定的错误很明显,但是我想知道为什么要设置此限制
PEP 572解释了为什么在迭代中使用赋值是有问题的(并引发了SyntaxError
),但我没有找到任何关于布尔赋值的内容
Operator precedence表示
:=
的优先级低于not
。因此not a :=
被解读为试图分配给not a
,因此出现语法错误您可以使用括号来阐明含义:
相关问题 更多 >
编程相关推荐