On Jun 5, 1:18 am, Carl Banks <pavlovevide...@gmail.com> wrote: > It's really the only sane way to handle it, odd though it may seem in > this narrow case. In Python nested functions have to be able to > reference the current value of a variable because of use cases like > this: > > def func(): > def printx(): > print x > x = 1 > printx() > x = 2 > printx() > > Referencing a nonlocal variable always uses the current (or last) > value of that variable, not the value it had when the nested function > was defined.
This is not a good argument. Counter example: Scheme works exactly like Python (define (func) (define x 1) (define (printx) (display x) (newline)) (printx) (set! x 2) (printx)) ;; prints 1 and 2 but it is still possible to have a list comprehension working as the OP wants: (list-of (lambda () i) (i in (range 11 16))) Actually, in Scheme one would have to fight to define a list comprehension (more in general loops) working as in Python: the natural definition works as the OP wants. See http://www.artima.com/weblogs/viewpost.jsp?thread=251156 and the comments below for the details. -- http://mail.python.org/mailman/listinfo/python-list