[Python-Dev] (name := expression) doesn't fit the narrative of PEP 20
Ethan Furman
ethan at stoneleaf.us
Wed Apr 25 18:15:53 EDT 2018
On 04/25/2018 02:55 PM, Tim Peters wrote:
> This becomes a question of seasoned judgment. For example, here's a
> real loop summing a series expansion, until the new terms become so
> small they make no difference to the running total (a common enough
> pattern in code slinging floats or decimals):
>
> while True:
> old = total
> total += term
> if old == total:
> return total
> term *= mx2 / (i*(i+1))
> i += 2
>
> To my eyes, this is genuinely harder to follow, despite its relative brevity:
>
> while total != (total := total + term):
> term *= mx2 / (i*(i+1))
> i += 2
> return total
>
> So I wouldn't use binding expressions in that case. I don't have a
> compelling head argument for _why_ I find the latter spelling harder
> to follow, but I don't need a theory to know that I in fact do.
I know why I do: I see "while total != total" and my gears start stripping. On the other hand,
while total != (total + term as total):
...
I find still intelligible. (Yes, I know "as" is dead, just wanted to throw that out there.)
--
~Ethan~
More information about the Python-Dev
mailing list