python裝飾器攔截方法執行

import time


def log(delay=0):
    def decorator(func):
        def wrapper(*args, **kwargs):
            """我是 wrapper 的註釋"""
            time1 = time.time()
            newargs = list(args)
            newargs[0] = newargs[0] * 2
            # res = func(*args, **kwargs)
            res = func(*newargs, **kwargs)
            time.sleep(delay)  # 延遲 delay 秒
            time2 = time.time()
            print("函數名:{}".format(func.__name__))
            print("函數註釋內容:{}".format(func.__doc__))
            print("入參 args :{}".format(args))
            print("入參 kwargs :{}".format(kwargs))
            print("返回值:{}".format(res))
            print("函數執行耗時:{:.8f}".format(time2 - time1))
            return res

        return wrapper

    return decorator


@log(0)
def get_prime_sum(n):
    """我是 get_prime_sum 的註釋"""
    sum = 0
    for i in range(1, n + 1):
        sum += i
    return sum


get_prime_sum(50)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章