假设我有一个
形式的函数def foo(times=None):
iterator = range(times) if times else itertools.count()
for _ in iterator:
# do stuff
是否有更多的Pythonic或优雅方式来实现这一目标?
答案 0 :(得分:6)
首先,如果您没有使用变量,因为看起来就像使用_
作为名称一样,请使用itertools.repeat(None)
,因为它更接近您想要做的事情,它的效率非常高。
如果您已经在使用itertools.repeat
,请使用第二个times
参数:
def foo(*times):
for _ in itertools.repeat(None, *times):
# do stuff
如果您不想破坏签名,可以这样做:
def foo(times=None):
for _ in itertools.repeat(*((None, times) if times is not None else (None,))):
# do stuff
这看起来不那么优雅,但可以防止你意外地提供过多的args。