python中的for else的原理是,
for语句跳出的原则是因为迭代器抛出了StopIteration异常,即
try:
while True:
temp=next(iterator)
do something 1
except StopIteration:
do something 2
for else 恰好利用了这个异常捕获机制,在2出执行else代码,因为如果for循环正常执行完,那么就会触发异常,则2就会被执行,但是如果循环过程中出触发了break则循环会退出,那么就不会触发异常,则不会执行2语句,也就是不会执行else。