[Python-ideas] A real life example of "given"

Brendan Barnwell brenbarn at brenbarn.net
Thu May 31 14:03:56 EDT 2018


On 2018-05-31 05:53, Steven D'Aprano wrote:
> Bottom line is, if you think it is okay that the following assignment to
> x affects the local scope:
>
>      results = []
>      for a in seq:
>          # using "given" to avoid arguments about :=
>          y = (x given x = a)+1
>          results.append(y)
>      assert "x" in locals()
>
> but then worry that changing the loop to a comprehension:
>
>      results = [(x given x = a)+1 for a in seq]
>      assert "x" in locals()
>
> will be a problem, then I think you are applying an unreasonably strict
> standard of functional purity towards comprehensions, one which is not
> justified by Python's consenting adults approach to side-effects or the
> fact that comprehensions can already have side-effects.

	What I don't understand is this: if we believe that, then why was 
comprehension-leaking EVER removed?  Everything that I've seen 
advocating for this kind of leaking seems to me like it is much more 
logically consistent with allowing all comprehension variables to leak 
than it is with the current behavior, in which they don't leak.

-- 
Brendan Barnwell
"Do not follow where the path may lead.  Go, instead, where there is no 
path, and leave a trail."
    --author unknown


More information about the Python-ideas mailing list