Wraps

 完美装饰器在inner前加@wrapps

需要from functools import wrapps

def wrapper(func):
    def inner(*args, **kwargs):
        print('begin')
        ret = func(*args, **kwargs)
        print('end')
        return ret
    return inner

@wrapper #func = wrapper(func)
def func(a, b):
    print('main func')
    return a + b

print(func(5, 6))

def wahaha():
    '''
    打印wahaha的函数
    :return:
    '''
    print('wahaha')

print(wahaha.__name__) #输出函数名
print(wahaha.__doc__) #输出函数注释

print(func.__name__)

from functools import wraps
def time(f):
    @wraps(f)
    def inner(*arg, **kwargs):
        pass
        ret = f(*arg, **kwargs)
        return ret
    return inner

@time
def main_func(a, b):
    """
    main_func function
    :param a: first number
    :param b: second number
    :return: a+b
    """
    return a + b

print(main_func.__name__)
print(main_func.__doc__)

 

posted @ 2020-03-30 12:38  vivagoal  阅读(164)  评论(0)    收藏  举报