Before there were exceptions `if ($result = query())` was the cleanest error-checking approach.
Also PHP didn't invent that syntax in any way, but followed C (in the end early PHP was a simplified C created by a C programmer) it only later git higher level constructs making this less needed.
In the Python version, the new "(a := 1)" will stand out compare to the canonical "a == 1" as the ':' and '()' are unexpected here, and scream that it's not regular if test.
I made a flake8 plugin to forbid assignment expressions:
https://github.com/Korijn/flake8-assignexp
Will be released once python 3.8 is out and I can test it.
The alternative `f(x) as y` syntax looked nice to my eyes, and doesn't introduce new symbols. However I'm sure they are right, that it would have bad corner cases.