It's very exciting to remove these sorts of redundant lines, but I cannot train my brain to intuitively view that line as it will be interpreted.
There is one case where the benefit, IMHO, far outweighs the negatives, and that can be seen in slides 30-31 of Dustin Ingram's slideshow[1].
PEP 572... the day Python jumped the walrus.
1. https://speakerdeck.com/di_codes/pep-572-the-walrus-operator...
Any C program can be written as a single line, with no linebreaks - that doesn't make it "better" by any metric.
Python is built around its readability, and slide 44:
> group = match.group(1) if (match := re.match(data)) else None
is anything but. 'match' is assigned after its first use, and it took me far to long to mentally parse what it was doing.
Something that is unnatural, such as an operator mixed with an expression is anything but natural, in the context of Python.
I can force myself to recognize the pattern; yes.
Also, the example I linked to in the slide show does feel somewhat intuitive (usage in a while loop).
Direct link: https://speakerd.s3.amazonaws.com/presentations/025e2c4bf551... (s/preview_// for a larger version)
Even if you accept that there is some continuum of "...ability" of these things, it's completely arbitrary and unique to everyone as to where the line between "this should be in" and "this should be out" lies.