What do the six following chunks of code do, and what would you like them to do? Which do you prefer?
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()