如何从函数生成函数

how to generate function from a function

您好,我正在使用以下形式编写很多函数:

def is_match_a(doc):
    pattern = # spaCy patterns
    matcher = Matcher(nlp.vocab)
    matcher.add("match_a", [pattern])
    matches = matcher(doc)
    if matches:
        return True

我想编写一个函数,根据给定的模式和名称生成这些函数。我在想:

def generate_matcher(pattern, name):
    func = some code
    return func

最终,我可以做以下事情

is_match_a = generate_matcher(pattern_a, name_a)
is_match_b = generate_matcher(pattern_b, name_b)
if is_match_a(doc):
    # do something
elif is_match_b(doc):
    # do something else

我是 python 的新手,我不知道该怎么做。这是你使用装饰器的地方吗?

定义一个使用主函数的 patternname 参数的嵌套函数。

def generate_matcher(pattern, name):
    def is_match(doc):
        matcher = Matcher(nlp.vocab)
        matcher.add(name, [pattern])
        matches = matcher(doc)
        if matches:
            return True

    return is_match