Python/Decorator

From Fundamental Ramen
< Python
Revision as of 08:04, 13 June 2019 by Tacoball (talk | contribs)
Jump to navigation Jump to search
TODO Code
def pre_hook(func):
    def wrapper(*args):
        a = args[0] + 1
        b = args[1] + 1
        return func(a, b)
    return wrapper
def post_hook(func):
    def wrapper(*args):
        print(func(*args))
    return wrapper
def duo_hook(func):
    def wrapper(*args):
        a = args[0] + 1
        b = args[1] + 1
        sum = func(a, b)
        print(sum)
        return sum
    return wrapper
def mydeco(func=None, name='default'):
    state = {
        'begin': 0
    }

    def pre_task():
        state['begin'] = time.time()
        print('name=%s' % name)

    def post_task():
        elapsed = time.time() - state['begin']
        print('elapsed=%.2f' % elapsed)

    def func_wrapper(*args):
        pre_task()
        fret = func(*args)
        post_task()
        return fret

    def deco_wrapper(func):
        def func_wrapper(*args):
            pre_task()
            fret = func(*args)
            post_task()
            return fret
        return func_wrapper

    return deco_wrapper if func is None else func_wrapper