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】:
for
和while
的else
子句只有在循环正常退出时才会执行,即永远不会运行break
。
for i in range(20):
print i
if i == 3:
break
else:
print 'HAHA!'
而try
的else
子句只有在没有异常发生时才会执行。
try:
a = 1 / 2
except ZeroDivisionError:
do_something()
else:
print '/golfclap'
【讨论】:
+1 用于扩展原始问题,展示它如何与try
一起使用【参考方案2】:
else
的主体在for
循环完成后执行,但前提是for
循环没有被break
语句提前终止。
【讨论】:
以上是关于Python for-else关系[重复]的主要内容,如果未能解决你的问题,请参考以下文章