基于参数在运行时自定义函数

2024-10-05 15:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想有一个函数,它是通过一些参数(这可能会有所不同的函数执行),但不是所有的一次,然后执行该函数时,给定其余的参数。你知道吗

这就是回调:

foo(argument)

但是foo是预先使用其他参数定制的。你知道吗

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

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

它接受文本体、子字符串和布尔值。它使用重叠或非重叠搜索在文本体中搜索子字符串。我希望能够创建一个具有减少回调的函数实例:

textSearch(text)

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

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

mysearch("Pancakes")

由于mysearch已预先参数化为文本“Pancakes is delicious.”的非重叠搜索,因此结果将为0(文本开头的索引)。你知道吗

或者可能给了我一个不同的配置,它以重叠的方式搜索不同的文本。我想打电话给:

mysearch("Hash browns")

这样做的目的是使接口保持一致,而不必担心定义函数工作方式的参数或重写函数定义。有没有办法做到这一点?你知道吗


Tags: 实例函数字符串text文本参数定义foo
2条回答

... 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.

对于这个用途^{}。你知道吗

尽管您可以通过给原始的textSearch函数一些默认参数值来解决问题。你知道吗

def textSearch(substring,overlapping):
    def parametrisedTextSearch(text):
        # Do Stuff. Can refer to substring and overlapping here.
        return index
    return parametrisedTextSearch

mySearch = textSearch(substring = whatever, overlapping = whatever)

mySearch("Pancakes")

相关问题 更多 >