import time
def wrapper(type):
print('start------',type)
def outter(fun):
def inner(*args,**kwargs):
start_time = time.time()
fun(*args,**kwargs)
end_time=time.time()
print('run time %d'%(end_time-start_time))
return 'ret'
print('------end')
return inner
return outter
@wrapper(type='3333')
def fun1(name,age):
time.sleep(3)
print('fun1 run',name,age)
#fun1=wrapper(fun1)
#fun1('howhy',34)#被装饰的函数带参数@wrapper()
#fun1=wrapper('aaa1')(fun1)#装饰器带参数@wrapper(type='3333')
ret=fun1('aaa4',34)#被装饰的函数返回值
print(ret)
import time
def wrapper(fun):
print('start wrapper fun')
def inner():
stime=time.time()
fun()
endtime=time.time()
print('fun run time %d'%(endtime-stime))
print('end wrapper fun')
return inner
##被装饰的函数带参数
def wrapperFunArgs(fun):
print('start wrapper fun')
def inner(*args,**kwargs):
stime=time.time()
fun(*args,**kwargs)
endtime=time.time()
print('fun run time %d'%(endtime-stime))
print('end wrapper fun')
return inner
##装饰带参数
def wrapperFunArgs1(type):
print('start wrapper fun',type)
def outter(fun):
def inner(*args,**kwargs):
stime=time.time()
fun(*args,**kwargs)
endtime=time.time()
print('fun run time %d'%(endtime-stime))
return 'ret' #被装饰的函数返回值
print('end wrapper fun')
return inner
return outter
#@wrapper
@wrapperFunArgs1(type='333')
def fun(*args,**kwargs):
time.sleep(3)
print(' run fun',args,kwargs)
#fun=wrapper(fun) ##44 45行相当于在fun函数上加装饰器@wrapper
#fun()
#fun=wrapperFunArgs(fun) ##46 47行相当于在fun函数上加装饰器@wrapperFunArgs
#fun('howhy',23)
fun()
import functools
def funDecorator(fun):
##@functools.wraps(fun)##这样__name__就可以获取到被装饰函数的名、
def inner(*args,**kwargs):
ret=fun(*args,**kwargs)
return ret
return inner
@funDecorator
def fun1(name):
print(name)
##若没有@functools.wraps(fun)则__name__为 inner 有则为fun1
print(fun1.__name__)