On Mar 26, 5:03 pm, Joshua Kugler <[EMAIL PROTECTED]> wrote: > George Sakkis wrote: > > On Mar 26, 5:02 pm, Joshua Kugler <[EMAIL PROTECTED]> wrote: > > >> I am trying to use lamdba to generate some functions, and it is not > >> working > >> the way I'd expect. The code is below, followed by the results I'm > >> getting. More comments below that. > > >> (...) > > >> So, is there some scoping issue with lambda > >> that I'm not seeing? > > > Yes; it's not related to lambda though but to closures (whether > > defined as lambdas or regular functions). See for example
I saw it somewhere, maybe recipies. >>> funs= [] >>> for i in range( 2 ): ... def f(): pass ... print( f ) ... funs.append( f ) ... <function f at 0x00B6B6A8> <function f at 0x00B6BB70> >>> funs[0] <function f at 0x00B6B6A8> >>> funs[1] <function f at 0x00B6BB70> >>> You also have: >>> partial( lambda a: 0 ) <functools.partial object at 0x00C1C1E0> >>> _( 1 ) 0 >>> and partial use cell, so it binds values. But: >>> a= (1,2) >>> c= lambda b: a[b] >>> c(0) 1 >>> a= (2,2) >>> c(0) 2 >>> Lambda is late-bound by name. -- http://mail.python.org/mailman/listinfo/python-list