如何连续调用一个函数两次或更多次?
在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
),然后再把这个列表丢掉。如果你不需要这些返回值的列表,我不建议这样做。