伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

一个有参装饰器,它可作用于任何函数上

来源:本站原创 浏览:121次 时间:2022-07-12

最近Python网络班学员去一个公司面试,遇到了一个很有意思的问题:

请设计一个有参装饰器decorator,它可作用于任何函数上,要求可以接受一个int作为参数,该参数为要求的执行秒数,如果该函数的执行时间大于规定的执行秒数,请打印改函数名字和执行时间。

马哥教育Python网络班企业教练思路:

#我们先来分析下:1、有参数的装饰器 --> 可以使用高阶函数实现2、执行时间 --> 可以使用python的time 库

实现代码:

from functools import wrapsimport time

class TakeTime:    def __init__(self, para: int):        self.para = para
   def __call__(self, func):        @wraps(func)        def wrapped(*args, **kwargs):            start_time = time.time()            name = func.__name__            func(*args, **kwargs)            count_time = time.time() - start_time            if self.para >= count_time:                print("the {name} take {time}, less time".format(name=name, time=count_time))            else:                print("the {name} take {time}, more time".format(name=name, time=count_time))            return func        return wrapped

def func_time(para: int):def decorator(func):        @wraps(func)        def wrapper(*args, **kwargs):            start_time = time.time()            name = func.__name__            func(*args, **kwargs)            count_time = time.time() - start_time            if para >= count_time:                print("the {name} take {time}, less time".format(name=name, time=count_time))            else:                print("the {name} take {time}, more time".format(name=name, time=count_time))            return func        return wrapper    return decorator
@TakeTime(10)def log():    for x in range(10):        time.sleep(0.5)

@func_time(10)def log1():    for x in range(10):        time.sleep(0.5)
代码执行结果:
the log take 5.030340194702148, less time<function log at 0x10216d950>


☆ END ☆

以上案例来自马哥Python网络班企业教练和学员的日常交流,学员学习Python过程中遇到问题不知道如何解决,遇到问题没有思路,都可以跟企业教练一对一交流,快来马哥教育了解一下Python课程吧。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net