Ell*_*sky 2 python iteration iterator loops python-3.x
假设我有一个表单的功能
def foo(times=None):
iterator = range(times) if times else itertools.count()
for _ in iterator:
# do stuff
Run Code Online (Sandbox Code Playgroud)
是否有更多的Pythonic或优雅方式来实现这一目标?
首先,如果您没有使用变量,因为它似乎与您使用_的名称一样,请使用itertools.repeat(None),因为它更接近您想要做的,并且它的效率非常高.
如果您已经在使用itertools.repeat,请使用第二个times参数:
def foo(*times):
for _ in itertools.repeat(None, *times):
# do stuff
Run Code Online (Sandbox Code Playgroud)
如果你不想破坏签名,你可以这样做:
def foo(times=None):
for _ in itertools.repeat(*((None, times) if times is not None else (None,))):
# do stuff
Run Code Online (Sandbox Code Playgroud)
这看起来不那么优雅,但可以防止你意外地提供太多的args.