首页 > 其他 > 详细

修改带参数的装饰器

时间:2021-06-02 19:06:13      阅读:18      评论:0      收藏:0      [点我收藏+]

一、根据用户传递的参数,动态修改装饰器的入参

二、实例:

import time,logging,random
def timeout(t):
def outter(func):
def inner(*args, **kwargs):
t0 = time.time()
res = func(*args, **kwargs)
t1 = time.time()
used = t1 - t0
if used >= t:
logging.error("{}:{}>{}".format(func.__name__, used, t))
return res
     #修改装饰器参数方法
def set_timeout(new_timeout):
nonlocal t
t = new_timeout
inner.set_timeout = set_timeout
return inner
return outter


@timeout(1.5)
def f(i):
print("in f [{}]".format(i))
while random.randint(0, 1):
time.sleep(0.6)


f.set_timeout(1)
for x in range(1):
f(x)

修改带参数的装饰器

原文:https://www.cnblogs.com/inflame/p/14841913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!