[Python-ideas] A comprehension scope issue in PEP 572
marcidy at gmail.com
Sun May 6 22:38:57 EDT 2018
On Sun, May 6, 2018 at 7:37 PM, Matt Arcidy <marcidy at gmail.com> wrote:
>> Personally, I'd still like to go back to := creating a statement-local
>> name, one that won't leak out of ANY statement. But the tide was
>> against that one, so I gave up on it.
> I have some probably tangential to bad arguments but I'm going to make
> them anyways, because I think := makes the most sense along with SLNB.
> first, := vs post-hoc (e.g. where or given)
> base case:
> [ x for x in range(1) ]
> while obvious to all of us, reading left to right does not yield what
> x is till later.
> [ (x, y) for x in range(1) for y in range(1) ] doubly so.
> If x or y were defined above, it would not be clear until the right
> end if what contex they had.
> [ (x, y) for x in range(n) given y = f(n) ]
> i dont know what's the iterator till after 'for'
> [ (x, y:=f(n) for x in range(n) ]
> At a minimum, I learn immediately that y is not the iterator.
> Slightly less cognitive load.
> it's not that one is better, or that either is unfamiliar, it's about
> having to hold a "promise" in my working memory, vs getting an
> immediate assignment earlier. (it's a metric!)
> now my silly argument.
> ":" is like a "when" operator.
> if y==x:
if y == x:
# execute when y == x
for x in y:
# execute when x in y
# execute when in f
x := 1 # x = 1 when in local scope
Stretch! told you ti was silly.
>> Python-ideas mailing list
>> Python-ideas at python.org
>> Code of Conduct: http://python.org/psf/codeofconduct/
More information about the Python-ideas