许多Python程序员可能没有意识到while循环和for循环的语法包含一个可选else:子句:
for val in iterable:
do_something(val)
else:
clean_up()
Run Code Online (Sandbox Code Playgroud)
该else子句的主体是某些清理操作的好地方,并且在循环的正常终止时执行:即,退出循环return或break跳过该else子句; continue执行后退出.我知道这只是因为我只是看着它(再次),因为我永远记得当该else子句被执行.
总是?关于循环的"失败",顾名思义?定期终止?即使循环退出return?如果不抬头,我永远无法完全确定.
我责怪我对关键词选择的持续存在的不确定性:我发现else这种语义非常缺乏统一性.我的问题不是"为什么这个关键字用于此目的"(我可能会投票关闭,但只有在阅读了答案和评论后),但我怎么能想到else关键字,以便它的语义有意义,我因此能记得吗?
我确信对此有相当多的讨论,我可以想象选择是为了与try语句的else:条款(我也必须查找)保持一致,并且目标是不添加到列表中Python的保留字.也许选择的理由else将澄清其功能并使其更令人难忘,但我将名称与功能联系起来,而不是在历史解释本身之后.
这个问题的答案,我的问题简要地作为副本被关闭,包含了很多有趣的背景故事.我的问题有一个不同的焦点(如何连接else关键字选择的特定语义),但我觉得应该有一个链接到这个问题的某个地方.