【发布时间】:2016-10-05 04:25:30
【问题描述】:
许多 Python 程序员可能不知道while 循环和for 循环的语法包含一个可选的else: 子句:
for val in iterable:
do_something(val)
else:
clean_up()
else 子句的主体是执行某些清理操作的好地方,并且在循环正常终止时执行:即,使用return 或break 退出循环会跳过@ 987654330@ 条款; continue 执行后退出。我知道这只是因为我只是looked it up(又一次),因为我永远记不起何时执行else 子句。
总是?顾名思义,关于循环的“失败”?定期终止?即使使用return 退出循环?如果不查,我永远无法完全确定。
我将我持续存在的不确定性归咎于关键字的选择:我发现 else 对于这种语义非常难以记忆。我的问题不是“为什么将此关键字用于此目的”(我可能会投票关闭,尽管只有在阅读了答案和 cmets 之后),而是 我怎么能想到 else 关键字,以便它语义是有道理的,因此我能记住它?
我确信对此进行了相当多的讨论,并且我可以想象做出选择是为了与 try 语句的 else: 子句(我也必须查找)保持一致,并且不添加到 Python 保留字列表的目标。也许选择else的原因会澄清它的功能,让它更容易记住,但我是把名字和功能联系起来,而不是历史解释本身。
this question 的答案包含许多有趣的背景故事,我的问题作为副本被短暂关闭。我的问题有不同的重点(如何将else 的特定语义与关键字选择联系起来),但我觉得在某个地方应该有这个问题的链接。
【问题讨论】:
-
@alexis Dharman 的编辑是为了让您的问题不是基于意见的,同时保持问题本身,IMO 编辑使帖子变得更好(并且不值得关闭)
-
@Dharman,我感谢您的努力,但您的编辑完全扭曲了问题的意图和内容。请停下来。
-
“我怎样才能想到
else关键字,以便它的语义有意义,因此我可以记住它?” - 具体向您解释我们可以如何提供帮助你个人记得else的工作原理不是一个有用的问题,Dharman 是我撤回对该问题的密切投票的唯一原因,因为没有它,问题是基于意见的 -
谢谢你的解释,@nick。然而,达曼的标题使它成为一个非常不同的问题的重复。如果你确信这太基于意见,我可以带着你的投票离开。但请不要理会这个问题。
-
另外,问题是关于这个设计的意义,而不是它的作用。
标签: python loops for-loop while-loop