[Python-ideas] 'where' statement in Python?

Sturla Molden sturla at molden.no
Tue Jul 20 21:32:25 CEST 2010


Den 20.07.2010 20:56, skrev Alex Light:
> i would suggest overloading the 'with', 'as' combo
>
> c = sqrt(a*a + b*b) with:
>     get_a(), get_b() as a, b
>

That will not work, the parser would think like this:

c = sqrt(a*a + b*b) with:
     get_a(), (get_b() as a), b


>
> c = sqrt(a*a + b*b) with:
>     get_a() as a
>     get_b() as b
>

I think it tastes too much like functional programming. Specifically:

It forces you to think backwards: it does not evaluate the lines in the 
order they read. The block below is evaluated before the expression 
above. It really means:

a = get_a()
b = get_b()
c = sqrt(a*a + b*b) with:
del a,b

That I think is very annoying.

Why not just use context managers instead?

with get_a() as a, get_b() as b:
      c = sqrt(a*a + b*b)

Now it reads the right way: top down, not bottom up.


Regards,
Sturla






More information about the Python-ideas mailing list