许多Python程序员可能没有意识到while
循环和for
循环的语法包含一个可选else:
子句:
for val in iterable:
do_something(val)
else:
clean_up()
else
子句的主体是执行某些类型的清理操作的好地方,并在循环的正常终止时执行:即,使用return
或break
跳过else
子句退出循环;continue
执行后退出。我知道这只是因为我只是看着它(再次),因为我永远记得当该else
子句被执行。
总是?顾名思义,在循环的“失败”上?定期终止吗?即使循环退出return
?我永远不能完全确定,不查它。
我将不确定性归咎于关键字的选择:我发现else
这种语义难以置信。我的问题不是“为什么要为此目的使用该关键字”(虽然只有在阅读了答案和评论之后,我才可能会投票关闭该关键字),但我如何考虑该else
关键字,以便其语义有意义,我因此可以记住吗?
我敢肯定,对此进行了大量讨论,并且我可以想象做出这一选择是为了与try
语句的else:
子句(我也必须查找)保持一致,并且其目标是不添加到该语句的列表中。 Python的保留字。也许选择的原因else
将阐明其功能并使之更加令人难忘,但我是将名称与功能联系在一起,而不是出于历史解释本身。
这个问题的答案(我的问题作为与之重复的问题简短地结束了)包含很多有趣的背景故事。我的问题有不同的侧重点(如何将特定语义else
与关键字选择联系起来),但是我觉得应该在某个地方链接到该问题。
else
基本上是指“如果继续条件失败”。在传统的for循环中,延续条件通常为i < 42
,在这种情况下,您可以将该部分视为if i < 42; execute the loop body; else; do that other thing
break
。规范的用例是循环搜索某事物,并在找到它时中断。该else
如果没有找到时,才会执行。