Hello. I found this strange behaviour of lambdas, closures and list comprehensions:
>>> funs = [lambda: x for x in range(5)] >>> [f() for f in funs] [4, 4, 4, 4, 4] Of course I was expecting the list [0, 1, 2, 3, 4] as the result. The 'x' was bound to the final value of 'range(5)' expression for ALL defined functions. Can you explain this? Is this only counterintuitive example or an error in CPython? Regards, Artur -- http://mail.python.org/mailman/listinfo/python-list