【发布时间】:2016-05-13 23:17:09
【问题描述】:
我正在经历this。来自 C 环境,它以完全的惊讶和难以置信的方式击中了我的脸。然后我自己试了一下::
bCondition = True
while bCondition:
print("Inside while\n")
bCondition = False
else:
print("Inside else\n")
print("done\n")
此代码呈现以下输出,
#Output
Inside while
Inside else
done
现在,我的问题是,为什么?我们为什么需要这个?为什么两个块都被执行? if 和 else 不是为彼此而生的,那么什么样的用例会使这个设计成为一个有用的设计来实现?
同样,如果我们只是更改代码以包含break,则该行为更加神秘。 Ideone Link.
bCondition = True
while bCondition:
break
else:
print("Inside else\n")
print("done\n")
此代码呈现以下输出,
#Output
done
为什么两个块都被跳过了?不是break 只是为了跳出循环,那为什么要跳出else 块?
我也通过了documentation,但无法消除我的疑虑。
【问题讨论】:
-
在第一个套件中执行的 break 语句终止循环而不执行 else 子句的套件。 - 这句话中有什么不清楚的地方?我同意这很奇怪,但它仍然是规范的一部分。您不必强制使用此表单。
-
不要在
while中使用else。
标签: python while-loop break