如何写一个装饰器?装饰器是一个闭包,分为两层函数,写法分两步:
第一步,外层函数,参数是函数名(被修饰的函数),返回值是内层函数
第二步,内层函数,参数是被修饰函数的参数,一般使用*args,**kwargs代替,返回值是被修饰函数返回值
例如:
1 import time 2 3 4 # 一,外层函数,装饰器函数名称,参数是一函数名(被修饰函数),返回值是内层函数名 5 def timethis(func): 6 #二,内层函数,实现装饰器的功能,参数是原函数参数,返回值是原函数返回值result 7 def wrapper(*args,**kwargs): 8 start=time.time() 9 result=func(*args,**kwargs) 10 end=time.time() 11 print(func.__name__,end-start) 12 return result 13 return wrapper 14 15 @timethis 16 def countdown(n): 17 while n>0: 18 n-=1 19 20 countdown(100000000)