常用小工具

常用的小工具,将持续更新

import time


def timecounter(func):
    def wrapper(*args,**kwargs):
        start_time = time.time()
        result = func(*args,**kwargs)
        end_time = time.time()
        print(f'----------->{func.__name__} cost {end_time-start_time}')
        return result
    return wrapper



def resault_cache(func):
    cache = {}
    def inner(*args,**kwargs):
        if args in cache:
            return cache[args]
        result = func(*args,**kwargs)
        cache[args] = result
        return result
    return inner


def validate_data(func):
    def inner(*args,**kwargs):
        valide = None
        # 验证过程
        if valide:
            return func(*args,**kwargs)
        else:
            raise ValueError("invalid data")

    return inner

def data_validate(func):
    def inner(*args,**kwargs):
        result = func(*args,**kwargs)
        valide_data = None
        # 验证数据是否符合要求的步骤
        if valide_data:
            return result
        else:
            raise ValueError("invalid data,check data")
    return inner

def log_record(func):
    def inner(*args,**kwargs):
        result = func(*args,**kwargs)
        with open('result.log','a') as log_file:
            log_file.write("----->需要记录的数据")
        return result
    return inner

def handle_error(func):

    def inner(*args,**kwargs):
        try:
            return func(*args,**kwargs)
        except Exception as e:
            with open('error.log', 'a') as log_file:
                log_file.write(f'Error in {func.__name__}----->{e}')

            return None

    return inner

# 调用的时候需要注意,当前装饰器,是装饰器工厂函数
def retry(max_count,delay):
    def wrapper(func):
        def inner(*args,**kwargs):
            count = 0
            while count< max_count:
                try:
                    return func(*args,**kwargs)
                except Exception as e:
                    print(f'--->{count+1} failed.retry in {delay} seconds')
                    count += 1
                    time.sleep(delay)
            raise Exception("Max Retry count")
        return inner
    return wrapper


def visualization(func):
    import matplotlib.pyplot as plt
    
    def inner(*args,**kwargs):
        result = func(*args,**kwargs)
        plt.figure()
        #可视化代码,优化
        plt.show()
        return result
    return inner

def debug(func):
    def inner(*args,**kwargs):
        print(f'{func.__name__},args is {args},kwargs{kwargs}')
        return func(*args,**kwargs)
    return inner


def warning_handler(func):
    
    def inner(*args,**kwargs):
        import warnings
        warnings.warn(f'{func.__name__} is not supported,will be removed')
        return func(*args,**kwargs) 
    return inner




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值