【发布时间】:2017-11-22 00:24:02
【问题描述】:
假设我有一个表单的函数
def foo(times=None):
iterator = range(times) if times else itertools.count()
for _ in iterator:
# do stuff
是否有更 Pythonic 或更优雅的方式来完成此任务?
【问题讨论】:
-
可能是显而易见的,但如果您可能会永远循环,那么您确实在您的“做事”中有一个
break条件? -
@idjaw 是的,这是用于在放弃之前尝试函数
times次的装饰器(如果引发异常)。如果时间是None,则装饰器会继续尝试该功能,直到KeyboardInterrupt。 -
这对我来说似乎很好。就个人而言,除了键盘中断之外,我可能还有其他东西可以“帮助”摆脱那个无限循环。但是,对我来说这看起来不错。
-
@idjaw 这有点浪费,因为
count无缘无故地执行所有这些添加。通常我也讨厌为了这样一个简单的目的而不得不做一个完整的三元和变量赋值。 -
发布的最新答案做了一些有趣的事情。我忘了重复。很有趣。
标签: python python-3.x loops iterator iteration