funcs = [] for x in (1, 2, 3): funcs.append(lambda: x) for f in funcs: print f() funcs = [] for x in (1, 2, 3): def myfunc(): return x funcs.append(myfunc) for f in funcs: print f() funcs = [] for x in (1, 2, 3): funcs.append(lambda x=x: x) for f in funcs: print f() funcs = [] for x in (1, 2, 3): def g(x): funcs.append(lambda: x) g(x) for f in funcs: print f() funcs = [] def append_a_func(x): funcs.append(lambda: x) for x in (1, 2, 3): append_a_func(x) for f in funcs: print f() def make_func(x): return lambda: x funcs = [] for x in (1, 2, 3): funcs.append(make_func(x)) for f in funcs: print f()
Tuesday, 31 March 2009
Python variable binding semantics
What do the six following chunks of code do, and what would you like them to do? Which do you prefer?
Subscribe to:
Posts (Atom)