假设我有一个函数

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/

10-14 19:48