[Python-ideas] Allow lambda decorators

Arnaud Delobelle arnodel at googlemail.com
Mon Feb 9 20:13:12 CET 2009


2009/2/9 Guido van Rossum <guido at python.org>:
> Define new 'for' syntax so that you can write
>
>  [lambda: i for new i in range(10)]
>
> or e.g.
>
>  fs = []
>  for new i in range(10):
>    def f():
>      return i
>    fs.append(f)
>
> The rule would be that "for new <name> in ..." defines a new "cell"
> each time around the loop, whose scope is limited to the for loop. So
> e.g. this wouldn't work:
>
>  for new i in range(10):
>    if i%7 == 6:
>      break
>  print i    # NameError

Cool! I'll be able to introduce a new scope at the drop of a hat with
a new handy 'idiom':

def foo(x):
    a = x + 1
    for new a in a**2,:
        print a
    print a

>>> foo(5)
36
6
>>>

-- 
Arnaud



More information about the Python-ideas mailing list