Hi all, I'm trying to convert functions - pass a few functions to a converting function, which change their behaviour and return the changed functions:
>>> def cfuncs(*funcs): n = [] for f in funcs: def ff(*args, **key): print 'Start!', f.func_name res = f(*args, **key) print 'End', f.func_name return res n.append(ff) return n then I try it using two functions: >>> def f1(): print 'hello' >>> def f2(x): return 2 * x Eventually: >>> newfuncs = cfuncs(f1, f2) I would expect newfuncs to hold changed versions of f1 and f2, but what is actually contained in newfuncs is twice the changed version of f2. That is: >>> newfuncs[1](100) Start! f2 End f2 200 which is what I expected, but: >>> newfuncs[0]() Start! f2 Traceback (most recent call last): File "<pyshell#267>", line 1, in <module> newfuncs[0]() File "<pyshell#261>", line 6, in ff res = f(*args, **key) TypeError: f2() takes exactly 1 argument (0 given) which is not. I'll appreciate your help in pointing out the mistake in defining cfuncs and how to fix it. Thank you very much! -- http://mail.python.org/mailman/listinfo/python-list