Python for-else关系[重复]

Posted

技术标签:

【中文标题】Python for-else关系[重复]【英文标题】:Python for-else relationship [duplicate] 【发布时间】:2013-08-09 15:06:16 【问题描述】:

我可以运行以下 python 脚本而不会出错。

for n in range(3):
    print n
else:
    print "done"

但我对没有匹配 if 的 else 感到困惑。 这没有意义。 有人能解释一下为什么会这样吗?

【问题讨论】:

相关帖子:***.com/questions/9979970/… 套用 Raymond Hettinger,“如果我们直接称它为 nobreak,没人会对此感到惊讶。” 【参考方案1】:

forwhileelse 子句只有在循环正常退出时才会执行,即永远不会运行break

for i in range(20):
  print i
  if i == 3:
    break
else:
  print 'HAHA!'

tryelse 子句只有在没有异常发生时才会执行。

try:
  a = 1 / 2
except ZeroDivisionError:
  do_something()
else:
  print '/golfclap'

【讨论】:

+1 用于扩展原始问题,展示它如何与try一起使用【参考方案2】:

else 的主体在for 循环完成后执行,但前提是for 循环没有被break 语句提前终止。

【讨论】:

以上是关于Python for-else关系[重复]的主要内容,如果未能解决你的问题,请参考以下文章

For-Else:Python 中一个奇怪但有用的功能!

python有趣用法汇总(持续更新)

Oracle 隐式游标:for-else

python不被识别为内部或外部命令[重复]

如何在python 2.7中获取随机整数[重复]

想要在单行 Python 中多次打印 [重复]