标签:stop highlight res 原理 验证 执行 def print art
import time #装饰器 def timmer(func): def wrapper(*args, **kwargs): #函数的参数 start_time = time.time() res = func(args, kwargs) #相当于执行test res接受函数的返回值 stop_time = time.time() print(‘运行时间是%s‘ %(stop_time-start_time)) return res #返回func函数的原返回值 return wrapper @timmer #test = timmer(test) def test(name, age): time.sleep(3) print(‘test函数运行完毕,名字为%s,年龄为%s‘ %name %age) return "test函数的返回值" #如果函数带返回值,则在wrapper中应该接收该函数的返回值 #装饰器原理调用: # test = timmer(test) #返回的是wrapper的地址 # test() #相当于执行wrapper() res = test(‘user‘, 18) print(res) #打印返回值
### 带参数的装饰器 import time #带参数装饰器 def auth(type = ‘db‘): def timmer(func): def wrapper(*args, **kwargs): print(‘装饰器参数类型为:‘,type) #打印装饰器参数 if type == ‘db‘: start_time = time.time() res = func(args, kwargs) stop_time = time.time() print(‘运行时间是%s‘ %(stop_time-start_time)) return res else: print(‘其他类型参数‘) return wrapper return timmer @auth(type=‘db‘) def test(name, age): time.sleep(1) print(‘test函数运行完毕,名字为%s,年龄为%s‘ %name %age) return "test函数的返回值" @auth(type=‘file‘) def test1(name, age): time.sleep(3) print(‘test1函数运行完毕,名字为%s,年龄为%s‘ %name %age) return "test1函数的返回值" test(‘带参数user‘, 18) test1(‘不带参数user‘,20)
note:
标签:stop highlight res 原理 验证 执行 def print art
原文地址:https://www.cnblogs.com/honel/p/9537866.html