Meador Inge <mead...@gmail.com> added the comment: I'll take a shot and writing a patch for this one. Nick, are the elements in 'co_freevars' and '__closures__' always expected to match up? In other words, is the 'closure' function below always expected to work (simplified; no error checking):
>>> def make_adder(x): ... def add(y): ... return x + y ... return add ... >>> def curry(func, arg1): ... return lambda arg2: func(arg1, arg2) ... >>> def less_than(a, b): ... return a < b ... >>> greater_than_five = curry(less_than, 5) >>> def closure(func): ... vars = [var for var in func.__code__.co_freevars] ... values = [cell.cell_contents for cell in func.__closure__] ... return dict(zip(vars, values)) ... >>> inc = make_adder(1) >>> print(closure(inc)) {'x': 1} >>> print(closure(greater_than_five)) {'arg1': 5, 'func': <function less_than at 0xb74c6924>} ? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue13062> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com