假设我有一个函数
def foo(times=None):
iterator = range(times) if times else itertools.count()
for _ in iterator:
# do stuff
有没有更像蟒蛇或优雅的方式来完成这一点?
最佳答案
首先,如果您没有使用变量,就像您使用_
作为名称一样,请使用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
它看起来不那么优雅,但是可以防止您意外地提供过多的arg。
关于python - 如果times不为None则循环执行times,否则永远循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44636438/