许多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
关键字的语义,以便记住它?请注意,具体解释如何帮助您个人记住else
的工作方式并不是一个有用的问题,因为如果没有这个问题,它会被认为是基于个人意见的。 - Nick stands with Ukraine