理解python装饰器
理解python装饰器
#-*- coding: UTF-8 -*- import time import functools def foo(say,hi='xx'): print locals() print 'in foo :say %s' % (say,) def add(x,y): return x+y #version 1 def timeit(func): start = time.clock() func() end = time.clock() print 'used:',end-start #如果不改变foo的调用方式就需要 #foo = timeit(foo) #version 2 def timeit2(func): def wrapper(): start = time.clock() func() end = time.clock() print 'used:',end-start return wrapper #需要考虑参数的问题 #version 3 def timeit3(func): def wrapper(*args,**kwargs): start = time.clock() func(*args,**kwargs) end = time.clock() print 'used:',end-start return wrapper #返回值 def timeit4(func): def wrapper(*args,**kwargs): start = time.clock() ret = func(*args,**kwargs) end = time.clock() print 'used:',end-start return ret return wrapper #让调用也方便 @timeit4 def sub(x,y): return x-y #当我们使用sub.__name__的时候返回的是什么呢? #'wrapper' #这个明显不是我们需要的,functools.wraps就是来解决这个问题的 def timeit5(func): @functools.wraps(func) def wrapper(*args,**kwargs): start = time.clock() ret = func(*args,**kwargs) end = time.clock() print 'used:',end-start return ret return wrapper @timeit5 def sub2(x,y): return x-y
热门文章:
相关内容
- 暂无相关文章
评论关闭