Bengt Richter wrote: >>is it possible to pass parameters to a decorator function? >> > Yes, but then the function must return the same kind of thing > a bare decorator-function name would have, which is a function > able to take a single argument of a function and return a function. > > So your decorator won't take f as an argument, just the optional > logfile, and it will return a function that does the wrapping like the > original decorator.
This sounds to me like something that should be done using a decorator. e.g. (everything from 'def timelogger' onwards is unchanged from the OP's code): def decoratorwithargs(f): def wrapper(*args,**kw): def inner(target): return f(target, *args, **kw) return inner return wrapper @decoratorwithargs def timelogger(f, logfile=sys.stdout): def wrapper(*a,**kw): logfile.write("started at %s" % time.ctime()) t0 = time.time() f(*a, **kw) t1 = time.time() logfile.write("ended at %s" % time.ctime()) logfile.write("diff = %f %s" % (t1-t0, "sec")) return wrapper @timelogger(file("hierher", "a")) ### <<<<<< (1) def loops(a,b,c): sum = 0 for i in range(a): for j in range(b): for k in range(c): sum += 1 (I think the logfile output could do with some newlines.) -- http://mail.python.org/mailman/listinfo/python-list