Как вызвать эту функцию timer? *args и **kargs там - это ли не знаки что должны быть позиционные и именованные аргументы (правильно ли я понимаю)?
import time reps = 3 repslist = range(reps) def timer(func, *pargs, **kargs): start = time.clock() for i in repslist: ret = func(*pargs, **kargs) elapsed = time.clock() - start return (elapsed, ret) def func(arg1, arg2='arg2'): print('arg1= {}, arg2 = {}'.format(arg1, arg2)) return 'args is: {} {}'.format(arg1, arg2) func('test1_arg1', arg2 = 'test1_arg2') print(timer(func, 'test2_arg1', arg2 = 'test2_arg2')) >>> >>> arg1= test1_arg1, arg2 = test1_arg2 arg1= test2_arg1, arg2 = test2_arg2 arg1= test2_arg1, arg2 = test2_arg2 arg1= test2_arg1, arg2 = test2_arg2 (0.0003797309573857481, 'args is: test2_arg1 test2_arg2') >>> >>>
def timer(func, *pargs, **kargs): .....