3

我正在努力解决这个问题。

所以这就是我想要做的:我有三个功能。比如说 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

4 回答 4

5

您没有调用该函数。function您通过在名称后面function加上括号来调用一个函数(),并在这些括号内放置您需要的任何参数:

function(function)

我已经将函数作为参数传递给自身,因为你的foobar接受参数,但对它们什么也不做。

于 2013-09-24T20:27:44.630 回答
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!')
于 2013-09-24T20:31:02.497 回答
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)
于 2013-09-24T20:28:27.047 回答
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')
于 2013-09-24T22:29:31.817 回答