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