Python:将带参数的函数作为参数传递

28 投票
4 回答
36755 浏览
提问于 2025-04-15 19:48
def lite(a,b,c):
    #...

def big(func): # func = callable()
    #...


#main
big(lite(1,2,3))

这个怎么做呢?
要怎样把带参数的函数传给另一个函数呢?

4 个回答

5

类似的问题通常有两种解决方法:

  1. 使用lambda表达式……但这样传入的函数只会接收一个参数,所以big()函数需要进行修改。
  2. 使用命名函数来调用原来的函数,并传入参数。请注意,这种函数可以在其他函数内部声明,参数也可以是变量。

看下面的例子:

#!/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)

撰写回答