你可以使用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")
请注意,为方便起见,我将重复次数放在前面。如果要使用* args结构,它不能是最后一个参数。
(为了完整性,您可以添加关键字参数以及** kwargs。)