许多 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
的具体语义和关键字的选择) ,但我觉得应该有一个链接到这个问题的地方。