PEP 572 introduces the assignement operator ("walrus operator").
The following code works, and outputs empty
def say_empty():
return ''
if a := say_empty():
print("not empty")
else:
print("empty")
I tried to negate the condition:
def say_empty():
return ''
if not a := say_empty():
print("empty")
else:
print("not empty")
This raises a SyntaxError
if not a := say_empty():
^
SyntaxError: cannot use assignment expressions with operator
The given error is clear, I am however wondering why this limitation was put in place.
PEP 572 explains why using the assignment in iterations is problematic (and raises SyntaxError
), but I did not find anything about boolean ones.