在python设计方面使用函数指针

时间:2016-05-24 12:59:02

标签: python python-2.7 closures function-pointers

我有一个案例,其中class A有一个名为foo1()的函数,我需要在相关时对其当前流程进行一些修改。

我想从文件中导入这个类,并让foo能够获得两个函数指针作为可选参数,这将决定我们是否会做不同的额外流程。

例如,使用新的函数指针...

使foo具有原始参数(foo(...,func_pointer1 = None,func_pointer2=None)

为了澄清一下,func_pointer1将保存一个函数以在任何情况下启动流程,func_pointer2旨在添加更多代码,以便在流程结束时进行处理。

我认为这种传递两个函数指针的方法并不是那么常见,我需要传递每个函数** kwargs参数。 任何人都知道这听起来不错,或者你有更合理的解决方案吗?

2 个答案:

答案 0 :(得分:0)

也许您可以将带有参数的函数作为两个列表传递给另一个函数,然后告诉下一个函数如何管理这些列表?

我必须做类似的事情,我这样做了:

def foo(*args):
    for item in in args:
        return execute(*item)

def execute(func, *args):
    return func(args)

答案 1 :(得分:0)

你叫什么"功能指针"实际上只是python中的函数。函数就像其他任何东西一样,所以你也可以随意传递它们。在标准库中,这用于max(key=function)或用于partial等functools中的内容。所以你做的完全没问题。

如果您不想明确传递* args和** kwargs,可以使用lambda或partial