hello NG, consider this code
>>> def timelogger(f): ... def wrapper(*a,**kw): ... print "started at %s" % time.ctime() ... t0 = time.time() ... f(*a, **kw) ... t1 = time.time() ... print "ended at %s" % time.ctime() ... print "diff = ", t1-t0, "sec" ... return wrapper ... >>> import time >>> @timelogger ... def loops(a,b,c): ... sum = 0 ... for i in range(a): ... for j in range(b): ... for k in range(c): ... sum += 1 ... >>> loops <function wrapper at 0x402eec34> >>> loops(10,10,10) started at Sun Jan 8 23:19:19 2006 ended at Sun Jan 8 23:19:19 2006 diff = 0.000367164611816 sec the code above works fine but I am wondering wheather it's possible to write something like this >>> 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 >>> import time >>> @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 ... (1) fails to compile is it possible to pass parameters to a decorator function? Regards, Daniel -- http://mail.python.org/mailman/listinfo/python-list