On Monday, November 30, 2009, Louis Steinberg <l...@cs.rutgers.edu> wrote: > I have run into what seems to be a major bug, but given my short exposure to > Python is probably just a feature: > > running > Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32) > [GCC 4.0.1 (Apple Inc. build 5493)] on darwin > > with file foo.py containing: > > ============================== clip here ============ > def p(d): > print d > > > l=[ ] > for k in [1,2,3]: > l.append(lambda : p(k)) > > for f in l: > f() > > ============================== clip here ============ > I get output > 3 > 3 > 3 > instead of > 1 > 2 > 3 > which I would expect. Can anyone explain this or give me a workaround? > Thank you > > > > -- > http://mail.python.org/mailman/listinfo/python-list >
I don't know if anyone considers python's incomplete implementation of closures a "feature" but it's documented so it's not really a bug either. I believe there is a trick with default arguments to get this to work, but I don't use lambdas enough to remember it. -- http://mail.python.org/mailman/listinfo/python-list