码迷,mamicode.com
首页 > 其他好文 > 详细

有返回值和带参数的修饰器

时间:2019-09-02 23:43:46      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:return   时间   tar   art   war   fun   UNC   imp   top   

加上返回值的

import time
def timmer(func): #func=test
def wrapper():
start_time=time.time()
res=func() #就是在运行test()
stop_time = time.time()
print(‘运行时间是%s‘ %(stop_time-start_time))
return res
return wrapper

@timmer #test=timmer(test)
def test():
time.sleep(3)
print(‘test函数运行完毕‘)
return ‘这是test的返回值‘

res=test() #就是在运行wrapper
print(res)

加上参数
import time
def timmer(func): #func=test1
def wrapper(*args,**kwargs): #test(‘linhaifeng‘,age=18) args=(‘linhaifeng‘) kwargs={‘age‘:18}
start_time=time.time()
res=func(*args,**kwargs) #就是在运行test() func(*(‘linhaifeng‘),**{‘age‘:18})
stop_time = time.time()
print(‘运行时间是%s‘ %(stop_time-start_time))
return res
return wrapper

# @timmer #test=timmer(test)
def test(name,age):
time.sleep(3)
print(‘test函数运行完毕,名字是【%s】 年龄是【%s】‘ %(name,age))
return ‘这是test的返回值‘

@timmer
def test1(name,age,gender):
time.sleep(1)
print(‘test1函数运行完毕,名字是【%s】 年龄是【%s】 性别【%s】‘ %(name,age,gender))
return ‘这是test的返回值‘

# res=test(‘linhaifeng‘,age=18) #就是在运行wrapper
# # print(res)
# test1(‘alex‘,18,‘male‘)

test1(‘alex‘,18,‘male‘)


# def test2(name,age,gender): #test2(*(‘alex‘,18,‘male‘,‘x‘,‘y‘),**{})
# #name,age,gender=(‘alex‘,18,‘male‘,‘x‘,‘y‘)
# print(name)
# print(age)
# print(gender)
#
# def test1(*args,**kwargs):
# test2(*args,**kwargs) #args=(‘alex‘,18,‘male‘,‘x‘,‘y‘) kwargs={}
#
# # test2(‘alex‘,18,gender=‘male‘)
#
# test1(‘alex‘,18,‘male‘)

有返回值和带参数的修饰器

标签:return   时间   tar   art   war   fun   UNC   imp   top   

原文地址:https://www.cnblogs.com/wulinmiao/p/11450428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!