Python函数可以作为另一个函数的参数吗?
说:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
所以这基本上是两个问题:
BTW,extraArgs是anotherfunc参数的列表/元组。
答案 0 :(得分:114)
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 :(得分:30)
以下是使用*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 :(得分:16)
Python中的函数是一流的对象。但是你的函数定义is a bit off。
def myfunc(anotherfunc, extraArgs, extraKwArgs):
return anotherfunc(*extraArgs, **extraKwArgs)
答案 3 :(得分:4)
当然,这就是为什么python实现以下方法,其中第一个参数是函数:
答案 4 :(得分:2)
anotherfunc(*extraArgs)
答案 5 :(得分:2)
例如:
def anotherfunc(inputarg1, inputarg2):
pass
def myfunc(func = anotherfunc):
print func
当你调用myfunc时,你会这样做:
myfunc(anotherfunc(inputarg1, inputarg2))
这将打印anotherfunc的返回值。
希望这有帮助!
答案 6 :(得分:1)
函数内的函数:我们也可以将函数用作参数。
换句话说,我们可以说函数的输出也是对象的引用,请参见下文,内部函数的输出如何引用外部函数,如下所示。
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 :(得分:1)
Decorators在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()
答案 8 :(得分:0)
def x(a):
print(a)
return a
def y(a):
return a
y(x(1))
答案 9 :(得分:0)
def x(a):
print(a)
return a
def y(func_to_run, a):
return func_to_run(a)
y(x, 1)
我认为这将是一个更合适的示例。 现在,我想知道的是,是否有一种方法可以对要在提交给另一个函数的参数中使用的函数进行编码。我相信C ++中有,但是我不确定在Python中。
答案 10 :(得分:-5)
def rotatedimention(l,m=[]):
p=input("please enter a number to rotate the dimention:")
for i in l:
if i==l[int(p)]:
break
else:
m.append(i)
for j in m:
l.remove(j)
return l+m
rotatedimention([121,21,41412,3412124,223424,2324114])