Python:将带参数的函数作为参数传递
def lite(a,b,c):
#...
def big(func): # func = callable()
#...
#main
big(lite(1,2,3))
这个怎么做呢?
要怎样把带参数的函数传给另一个函数呢?
4 个回答
5
类似的问题通常有两种解决方法:
- 使用lambda表达式……但这样传入的函数只会接收一个参数,所以big()函数需要进行修改。
- 使用命名函数来调用原来的函数,并传入参数。请注意,这种函数可以在其他函数内部声明,参数也可以是变量。
看下面的例子:
#!/usr/bin/python
def lite(a,b,c):
return "%r,%r,%r" % (a,b,c)
def big(func): # func = callable()
print func()
def big2(func): # func = callable with one argument
print func("anything")
def main():
param1 = 1
param2 = 2
param3 = 3
big2(lambda x: lite(param1, param2, param3))
def lite_with_params():
return lite(param1,param2,param3)
big(lite_with_params)
main()
13
这段代码的意思是……
首先,它会做一些检查,看看输入的内容是否符合要求。如果不符合,就会给出错误提示。
接下来,它会处理这些输入,进行一些计算或转换,然后把结果保存起来。
最后,它会把处理好的结果展示出来,或者返回给调用它的地方。
总的来说,这段代码的目的是确保输入正确,然后进行处理,最后输出结果。
import functools
#main
big(functools.partial(lite, 1,2,3))
44
为什么不这样做:
big(lite, (1, 2, 3))
呢?
这样你就可以这样做:
def big(func, args):
func(*args)