问题:Python函数作为函数参数吗?
Python函数可以作为另一个函数的参数吗?
说:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
所以这基本上是两个问题:
- 可以吗?
- 如果是的话,如何在其他函数中使用该函数?我需要使用exec(),eval()还是类似的东西?从来不需要与他们搞混。
顺便说一句,extraArgs是anotherfunc参数的列表/元组。
回答 0
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
>>>
回答 1
这是使用*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
必须按照这个顺序和必须的函数调用该函数的最后的参数。
回答 2
Python中的函数是一流的对象。但是您的函数定义有点偏离。
def myfunc(anotherfunc, extraArgs, extraKwArgs):
return anotherfunc(*extraArgs, **extraKwArgs)
回答 3
当然,这就是python在第一个参数为函数的情况下实现以下方法的原因:
- map(function,iterable,…)-将函数应用于iterable的每个项目并返回结果列表。
- filter(function,iterable)-从这些iterable的元素构造一个列表,对于这些元素,函数将返回true。
- reduce(function,iterable [,initializer])-将两个参数的函数从左到右累计应用于iterable的项,以将iterable减少为单个值。
- Lambdas
回答 4
- 是的,允许。
- 您可以像使用其他函数一样使用该函数:
anotherfunc(*extraArgs)
回答 5
- 是。通过在输入参数中包含函数调用,可以一次调用两个(或多个)函数。
例如:
def anotherfunc(inputarg1, inputarg2):
pass
def myfunc(func = anotherfunc):
print func
调用myfunc时,请执行以下操作:
myfunc(anotherfunc(inputarg1, inputarg2))
这将打印anotherfunc的返回值。
希望这可以帮助!
回答 6
函数内部的函数:我们也可以将函数用作参数。
换句话说,我们可以说函数的输出也是对象的引用,请参阅下文,内部函数的输出如何引用外部函数,如下所示。
def out_func(a):
def in_func(b):
print(a + b + b + 3)
return in_func
obj = out_func(1)
print(obj(5))
结果将是.. 14
希望这可以帮助。
回答 7
def x(a):
print(a)
return a
def y(a):
return a
y(x(1))
回答 8
def x(a):
print(a)
return a
def y(func_to_run, a):
return func_to_run(a)
y(x, 1)
我认为这将是一个更适当的示例。现在我想知道的是,是否有一种方法可以编码要在提交给另一个函数的参数中使用的函数。我相信在C ++中,但是在Python中我不确定。
回答 9
装饰器在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()
输出量
- 这是执行之前的内部函数
- 我是参数函数
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。