[Python-ideas] PEP 572: Statement-Local Name Bindings

Kyle Lahnakoski klahnakoski at mozilla.com
Wed Feb 28 22:11:06 EST 2018



On 2018-02-28 02:46, Matt Arcidy wrote:
> From readability, the examples put forth have been to explain the
> advantage, with which I agree.  However, i do not believe this scales
> well.
>
> [(foo(x,y) as g)*(bar(y) as i) + g*foo(x,a) +baz(g,i) for x... for y...]
>
> That's 3 functions, 2 iterators, 3 calls saved ('a' is some constant
> just to trigger a new call on foo).  I'm not trying to show ugly
> statements can be constructed, but show how quickly in _n iterators
> and _m functions readability declines.
>

You could put it on multiple lines

> [
>     (g * i) + g * foo(x, a) + baz(g, i)
>     for x in X
>     for y in Y
>     for g in [foo(x,y)]
>     for i in [bar(y)]
> ]

and then notice a common factor!  :)

> [
>     g * (i + foo(x, a) + baz(g, i))
>     for x in X
>     for y in Y
>     for g in [foo(x,y)]
>     for i in [bar(y)]
> ]






More information about the Python-ideas mailing list