创建一个可以多次执行其他功能的功能

时间:2018-12-24 21:09:22

标签: python python-3.x

def loop(count, cmd):
    for i in range(count):
        cmd

我会这样调用该函数:loop(4, print("Send nudes")) 然后该功能将执行4次e.i.字符串“ send nudes”将在控制台中出现4次。 我该如何构造我的函数,这样才能正常工作?

2 个答案:

答案 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以获得更好的功能