我正试着绕过这个。
所以这就是我想要做的: 我有三个功能。 比如说,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
?
但是因为我没有看到这一点......我显然不太清楚这一点吗?
答案 0 :(得分:5)
你没有打电话给这个功能。您可以通过使用括号function
跟随名称function
来调用名为()
的函数,并在这些括号中放置您需要的任何参数:
function(function)
我已将函数作为参数传递给自身,因为foo
和bar
接受了参数,但对它们没有任何作用。
答案 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')