如何连续调用一个函数两次或更多次?

67 投票
9 回答
205846 浏览
提问于 2025-04-17 11:18

在Python中,有没有简单的方法可以连续调用一个函数两次或更多次?比如说:

do()
do()
do()

可能像这样:

3*do()

9 个回答

12

还有三种方法可以做到这一点:

(I) 我觉得使用 map 也是一个选择,不过在某些情况下,它需要生成一个额外的包含 None 的列表,并且总是需要一个参数列表:

def do():
    print 'hello world'

l=map(lambda x: do(), range(10))

(II) itertools 包含一些可以用来遍历其他函数的功能,具体可以查看这个链接 https://docs.python.org/2/library/itertools.html

(III) 之前好像没有提到使用函数列表(而且这实际上在语法上和最初讨论的内容最接近):

it=[do]*10
[f() for f in it]

或者可以用一行代码来实现:

[f() for f in [do]*10]
22

你可以定义一个函数,让它把传入的函数执行N次。

def repeat_fun(times, f):
    for i in range(times): f()

如果你想让它更灵活一点,还可以给被重复执行的函数传递参数:

def repeat_fun(times, f, *args):
    for i in range(times): f(*args)

使用方法:

>>> def do():
...   print 'Doing'
... 
>>> def say(s):
...   print s
... 
>>> repeat_fun(3, do)
Doing
Doing
Doing
>>> repeat_fun(4, say, 'Hello!')
Hello!
Hello!
Hello!
Hello!
114

我想要:

for _ in range(3):
    do()

这里的 _ 是一种约定,用来表示你不在乎这个变量的值。

你可能还会看到有人这样写:

[do() for _ in range(3)]

不过这样做稍微有点浪费,因为它会创建一个列表,里面包含每次调用 do() 的返回值(即使是 None),然后再把这个列表丢掉。如果你不需要这些返回值的列表,我不建议这样做。

撰写回答