def loop(count, cmd):
for i in range(count):
cmd
我会这样调用该函数:loop(4, print("Send nudes"))
然后该功能将执行4次e.i.字符串“ send nudes”将在控制台中出现4次。
我该如何构造我的函数,这样才能正常工作?
答案 0 :(得分:3)
使用以下代码:
loop(4, print("Send nudes"))
您没有传递函数本身。您传递的是调用该函数的结果。对于print
,该值为None
。对于您想要的东西,可能最简单的方法是将函数调用包装在lambda
表达式中,然后调用该lambda。试试这个:
def loop(count, cmd):
for i in range(count):
cmd()
loop(4, lambda: print("Send nudes"))
答案 1 :(得分:2)
您可以将函数作为对象传递给其他函数。
def loop(count, cmd, *cmd_args):
for i in range(count):
cmd(*cmd_args)
loop(4, print, "send stuff")
请注意,您不应“调用”函数,而应按原样传递它。调用该函数会将调用替换为返回值(对于打印,该返回值为None)
EDITlog:将cmd_args更改为* cmd_args以获得更好的功能