【发布时间】:2013-08-09 15:06:16
【问题描述】:
我可以运行以下 python 脚本而不会出错。
for n in range(3):
print n
else:
print "done"
但我对没有匹配 if 的 else 感到困惑。
这没有意义。
有人能解释一下为什么会这样吗?
【问题讨论】:
-
套用 Raymond Hettinger,“如果我们直接称它为
nobreak,没人会对此感到惊讶。”
我可以运行以下 python 脚本而不会出错。
for n in range(3):
print n
else:
print "done"
但我对没有匹配 if 的 else 感到困惑。
这没有意义。
有人能解释一下为什么会这样吗?
【问题讨论】:
nobreak,没人会对此感到惊讶。”
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'
【讨论】:
try一起使用
else 的主体在for 循环完成后执行,但前提是for 循环没有被break 语句提前终止。
【讨论】: