在python中将函数作为参数传递

时间:2013-09-24 20:25:12

标签: python

我正试着绕过这个。

所以这就是我想要做的: 我有三个功能。 比如说,foo,bar和foo_bar

def foo_bar(function):
   for i in range(20):
      function # execute function
def foo(someargs):
   print "hello from foo"

def bar(someargs):
   print " hello from bar"

当我做foo_bar(foo) # how to specify arguments to foo??

我希望我看到"hello from foo" 20 times

但是因为我没有看到这一点......我显然不太清楚这一点吗?

4 个答案:

答案 0 :(得分:5)

你没有打电话给这个功能。您可以通过使用括号function跟随名称function来调用名为()的函数,并在这些括号中放置您需要的任何参数:

function(function)

我已将函数作为参数传递给自身,因为foobar接受了参数,但对它们没有任何作用。

答案 1 :(得分:2)

这基本上应该按照你的意愿行事:

def foo_bar(function):
   for i in range(20):
      function(i) # execute function
def foo(someargs):
   print "hello from foo"

def bar(someargs):
   print " hello from bar"

foo_bar(foo)
foo_bar(bar)

答案 2 :(得分:2)

文档中有一节关于此here。您最有可能希望将foo_bar构建为

def foo_bar(function, *func_args):
    for i in range(20):
        function(func_args)

def foo(a):
    print "hello %s"%a

然后您可以将其称为

foo_bar(foo, 'from foo!')

答案 3 :(得分:0)

我会让foo_bar返回一个接受传递给内部函数的参数的函数:

def foo_bar(fn, n=20):
    def _inner(*args, **kwargs):
        for i in range(n):
            fn(*args, **kwargs)
    return _inner

并称之为:

foo_bar(foo)('some_param')