用于简单递归的Python装饰器?在标准库或其他地方?

Tim*_*ijk 6 python recursion decorator

我正在寻找一个可以使函数递归的Python装饰器.我发现自己写了很多这样的函数:

def xyz(data):
    if not isinstance(data, TypeThatDenotesSingularity):
        return map(xyz, data)
    return singular_xyz(data)
Run Code Online (Sandbox Code Playgroud)

我认为那里必须有一个装饰器(在标准库中?)可以减少一点点的符号:

@recursive(TypeThatDenotesSingularity)
def xyz(data):
    return singular_xyz(data)
Run Code Online (Sandbox Code Playgroud)

我一直在寻找,但我似乎无法到达任何地方.也许我错过了一些必要的术语?

谢谢你指点我正确的方向!

nmi*_*els 1

我不知道装饰器,但如果你发现自己一遍又一遍地重写相同的模式,你可以用一个类来完成它。

class Recursive(object):
    def __init__(self, check_type, singular):
        self.check_type = check_type
        self.singular = singular

    def __call__(self, data):
        if not isinstance(data, self.check_type):
            return map(self, data)
        return self.singular(data)
Run Code Online (Sandbox Code Playgroud)