假设我有这样的代码:
def myfunc(anotherfunc, extraArgs): # somehow call `anotherfunc` here, passing it the `extraArgs` pass
我想传递另一个现有函数作为 anotherfunc参数,以及一个参数列表或元组作为 extraArgs,并让 myfunc使用这些参数调用传入函数。
anotherfunc
extraArgs
myfunc
这可能吗? 我如何做到这一点-我需要 exec/eval或类似?
exec
eval
Python 函数可以作为参数吗 另一个功能?
是的。
def myfunc(anotherfunc, extraArgs): anotherfunc(*extraArgs)
更具体地说,是各种各样的争论。
>>> def x(a,b): ... print "param 1 %s param 2 %s" % (a,b) ... >>> def y(z,t): ... z(*t) ... >>> y(x, ("hello","manuel")) param 1 hello param 2 manuel
anotherfunc(*extraArgs)
Python 中的函数是一流的对象,但是函数定义 有点不对劲。
def myfunc(anotherfunc, extraArgs, extraKwArgs): return anotherfunc(*extraArgs, **extraKwArgs)
当然,这就是为什么 python 实现了以下方法,其中第一个参数是一个函数:
例如:
def anotherfunc(inputarg1, inputarg2): pass def myfunc(func = anotherfunc): print func
当你调用 myfunc 的时候,你这样做:
myfunc(anotherfunc(inputarg1, inputarg2))
这将打印另一个 func 的返回值。
希望这个能帮上忙!
下面是另一种使用 *args(也是可选的)和 **kwargs的方法:
*args
**kwargs
def a(x, y): print x, y def b(other, function, *args, **kwargs): function(*args, **kwargs) print other b('world', a, 'hello', 'dude')
输出
hello dude world
请注意,function、 *args、 **kwargs必须按照这个顺序排列,并且必须是调用函数的函数的最后一个参数。
function
def x(a): print(a) return a def y(a): return a y(x(1))
def x(a): print(a) return a def y(func_to_run, a): return func_to_run(a) y(x, 1)
我觉得这个样本更合适。 现在我想知道的是,是否有一种方法可以在向另一个函数提交参数时使用这个函数。我相信 C + + 中有,但是在 Python 中我不确定。
函数内部函数: 我们也可以使用函数作为参数。
换句话说,我们可以说一个函数的输出也是一个对象的引用,看看下面内部函数的输出是如何引用外部函数的,如下所示。.
def out_func(a): def in_func(b): print(a + b + b + 3) return in_func obj = out_func(1) print(obj(5))
结果就是. 。 14
希望这个能帮上忙。
修饰符 在 Python 中非常强大,因为它允许程序员将函数作为参数传递,还可以在另一个函数中定义函数。
def decorator(func): def insideFunction(): print("This is inside function before execution") func() return insideFunction def func(): print("I am argument function") func_obj = decorator(func) func_obj()