如何从函数生成函数
Posted
技术标签:
【中文标题】如何从函数生成函数【英文标题】:how to generate function from a function 【发布时间】:2021-11-22 14:28:00 【问题描述】:您好,我正在使用以下形式编写很多函数:
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 新手,我不知道该怎么做。这是你使用装饰器的地方吗?
【问题讨论】:
在is_match_a()
你可以只用return matches
而不是检查它是否为真
【参考方案1】:
定义一个使用主函数的pattern
和name
参数的嵌套函数。
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
【讨论】:
谢谢!这是一个值得使用装饰器的问题吗? 并非如此。当您想在其他函数周围添加代码时使用装饰器,而不仅仅是为其提供参数。以上是关于如何从函数生成函数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.js 流回调中聚合从异步函数生成的 Promise?
如何使用 PL SQL 函数从 xmltype 数据生成 xml 报告