On Mon, Jun 13, 2011 at 8:30 AM, Greg Ewing greg.ewing@canterbury.ac.nz wrote:
I'm -1 on any proposal that somehow tries to make the default-argument hack more acceptable.
The main reason people still feel the need to use it is that the for-loop is broken, insofar as it doesn't create a new binding for each iteration.
The right way to address that is to fix the for-loop, IMO.
Yikes, now *there's* a radical proposal.
-lots on any idea that would make:
def f(): i = 0 def g1(): return i i = 1 def g2(): return i return [g1, g2]
differ in external behaviour from:
def f(): result = [] for i in range(2): def g(): return i result.append(g) return result
or:
def f(): return [lambda: i for i in range(2)]
or:
def _inner(): for i in range(2): def g(): return i yield g
def f(): return list(_inner())
Cheers, Nick.