Function 实现“函数调用函数”

Function 实现“函数调用函数”,function,functional-programming,python,Function,Functional Programming,Python,我想写一段代码来调用给定参数指定的函数。例如: def caller(func): return func() 但是,我还想为“caller”函数指定可选参数,以便“caller”使用指定的参数(如果有)调用“func” def caller(func, args): # calls func with the arguments specified in args 有没有一种简单的python方法可以做到这一点?您可以使用和来实现这一点 但是,不确定为什么需要这样做。这已经作为函数

我想写一段代码来调用给定参数指定的函数。例如:

def caller(func):
    return func()
但是,我还想为“caller”函数指定可选参数,以便“caller”使用指定的参数(如果有)调用“func”

def caller(func, args):
# calls func with the arguments specified in args
有没有一种简单的python方法可以做到这一点?

您可以使用和来实现这一点


但是,不确定为什么需要这样做。

这已经作为函数存在,尽管由于新的*args和**kwargs语法,它被认为是过时的

>>> def foo(a,b,c): print a,b,c
>>> apply(foo, (1,2,3))
1 2 3
>>> apply(foo, (1,2), {'c':3})   # also accepts keyword args
但是,*和**语法通常是更好的解决方案。上述内容相当于:

>>> foo(*(1,2), **{'c':3})

这太可怕了。你确定你没有过度概括吗?@Greg:谢谢你的关心这不是用于生产代码的。我将要为我的学业测试一些东西,我认为必须有一种用python实现的方法。所以我问嘿这是完全正常的!我一直在生产代码中使用它。用例:协议实现:{tokens:functions}字典,然后与token匹配,调用函数。如果令牌是显式状态,则有一个状态机。Python就是为这个而设计的!一点也不可怕。希望我能否决你的评论Greg:-
>>> foo(*(1,2), **{'c':3})