例如,这段代码可以不间断地重写(没有继续或返回)吗?
import logging
for i, x in enumerate(x):
logging.info("Processing `x` n.%s...", i)
y = do_something(x)
if y == A:
logging.info("Doing something else...")
do_something_else(x)
elif y == B:
logging.info("Done.")
break
编辑:由于有些人批评使用break并继续内部循环,我想知道Python是否允许在没有它们的情况下编写for循环.我会说Python不允许这样做(也许它会违背“一种方法”规则).
编辑2:评论者让我注意到可以使用返回,但这也不是解决方案.
最佳答案 你总是可以使用一个函数并从中返回:
import logging
def func():
for i, x in enumerate(x):
logging.info("Processing `x` n.%s...", i)
y = do_something(x)
if y == A:
logging.info("Doing something else...")
do_something_else(x)
elif y == B:
logging.info("Done.")
return # Exit the function and stop the loop in the process.
func()
虽然在我看来使用break更优雅,因为它让你的意图更清晰.