为什么“if not a:=say_empty()”会引发语法错误?

2024-06-25 23:46:53 发布

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

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),但我没有找到任何关于布尔赋值的内容


Tags: 代码returnifdefnot运算符条件else