装饰器函数获得堆栈溢出

时间:2017-05-21 10:58:46

标签: python python-3.x currying

# debug.py
from functools import wraps, partial


def debug(func=None, *, prefix=''):
    if func is None:
        # Wasn't passed
        return partial(debug, prefix=prefix)

    # func is function to be wrapped
    @wraps(func)
    def wrapper(*args, **kwargs):
        print('{}, func.__name__'.format(prefix))
        return func(*args, **kwargs)

    return wrapper
#example.py
from debug import debug


@debug
def add(x, y):
    return x + y


@debug(prefix='**')
def sub(x, y):
    return x - y


add(1, 2)
sub(1, 2)

执行时,超出最大递归深度

问题: 为什么debug()执行无限递归?

0 个答案:

没有答案