python - 根据参数在运行时自定义函数

标签 python function

我想要一个函数,它传递一些参数(这些参数在函数的执行之间可能有所不同),但不是同时传递所有参数,然后在给定其余参数时执行该函数。

这个想法是,这是回调:

foo(argument)

但是 foo 是预先使用其他参数自定义的。

作为一个简单的示例,我们以重叠文本搜索与非重叠文本搜索为例。我有一个功能:

def textSearch(text,substring,overlapping):
...
... # Do stuff
return index

它需要一个文本正文、一个子字符串和一个 bool 值。它使用重叠或非重叠搜索来搜索文本正文中的子字符串。我希望能够创建一个具有减少回调的函数实例:

textSearch(text)

通过在回调之前参数化子字符串重叠字段,而无需创建另一个函数定义。然后可以在文本的多个实例上调用该函数并使用这些参数进行操作。但是,该函数的单独实例应该能够同时存在具有不同的参数。

我得到了一个存储在名为mysearch的变量中的函数实例。该函数接受一个文本参数并返回较大文本中文本起始字符的索引。但是,我不关心它是重叠还是不重叠,也不关心正在搜索的文本是什么。我想直接打电话:

mysearch("Pancakes")

mysearch 已预先参数化为文本“Pancakes are好吃。”的非重叠搜索,因此结果将为 0(文本开头的索引)。

或者也许我得到了不同的配置,它以重叠的方式使用不同的文本进行搜索。我希望能够调用:

mysearch("Hash browns")

这个想法是保持接口(interface)相同,而不必担心定义函数如何工作的参数或重写函数定义。有没有办法实现这样的目标?

最佳答案

... a function which is passed some parameters (which can vary between executions of the function), but not all of them at once, then execute the function when given the rest of the parameters.

对于此用途functools.partial

尽管您只需为原始 textSearch 函数提供一些默认参数值就可以解决您的问题。

关于python - 根据参数在运行时自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16535441/

相关文章:

javascript - 对象内部的函数无法正常工作 - Javascript

c - 为什么可以不使用其确切名称来调用函数?

java - LibSVM 与 LibShortText

python - 添加两个具有不同索引的 pandas Series 对象的惯用方法

python - 如何找到满足条件时第一行和该行的时间差?

Xcode、Swift - 如何使用将参数作为选择器的函数

python - Django:如何获取 url 路径?

python - 如何处理原始 Python 套接字中的 ssl 连接?

javascript - getElementsByClassName 不起作用,但 getElementById 可以吗?

JavaScript 在按钮上无法正常工作