您可以使用lambda
:
repeat(lambda: bar(42))
或functools.partial
:
from functools import partial
repeat(partial(bar, 42))
或分别传递参数:
def repeat(times, f, *args):
for _ in range(times):
f(*args)
这种最终样式在标准库和主要的Python工具中非常常见。*args
表示可变数量的参数,因此您可以将该函数用作
repeat(4, foo, "test")
要么
def inquisition(weapon1, weapon2, weapon3):
print("Our weapons are {}, {} and {}".format(weapon1, weapon2, weapon3))
repeat(10, inquisition, "surprise", "fear", "ruthless efficiency")