我有一个案例,其中class A
有一个名为foo1()
的函数,我需要在相关时对其当前流程进行一些修改。
我想从文件中导入这个类,并让foo能够获得两个函数指针作为可选参数,这将决定我们是否会做不同的额外流程。
例如,使用新的函数指针...
foo(...,func_pointer1 = None,func_pointer2=None)
)
为了澄清一下,func_pointer1将保存一个函数以在任何情况下启动流程,func_pointer2旨在添加更多代码,以便在流程结束时进行处理。
我认为这种传递两个函数指针的方法并不是那么常见,我需要传递每个函数** kwargs参数。 任何人都知道这听起来不错,或者你有更合理的解决方案吗?
答案 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。