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

3
我希望你能帮我解决这个问题。 所以这是我想要做的事情: 我有三个函数。 分别是say,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)时,我不知道如何指定给foo的参数?

我期望会看到"来自foo的hello" 20次

但由于我没有看到这个结果,显然我对这个问题的理解还不够深入?

4个回答

5

您没有调用这个函数。您可以通过在名称 function 后面添加括号 () 来调用名为 function 的函数,并在括号内放置所需的任何参数:

function(function)

我将函数作为参数传递给它自身,因为您的foobar接受参数但并未使用它们。


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

这个文档有相关部分。您很可能想将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!')

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')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接