如何实现decorator高阶函数?

1 有参数的装饰器 --> 高阶函数

创新互联公司是一家专注于成都做网站、网站设计与策划设计,葫芦岛网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:葫芦岛等地区。葫芦岛做网站价格咨询:18982081108

2 执行时间 --> time 库

上代码:

from functools import wraps
import 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)


网站题目:如何实现decorator高阶函数?
URL标题:http://bzwzjz.com/article/jeddoc.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 成都网站设计 专业网站建设 网站建设方案 营销网站建设 成都网站建设 定制网站建设多少钱 成都网站设计 网站建设费用 四川成都网站制作 成都网站设计 重庆电商网站建设 网站制作 成都网站建设公司 盐亭网站设计 成都网站建设公司 成都网站制作公司 定制网站设计 成都网站制作 品牌网站建设 高端网站设计 LED网站设计方案