为什么Python在"for-else"和"while-else"中有"else"?

Jim*_*mmy 14 python python-3.x

我是Python的初学者.我发现"for-else"和"while-else"中的"else"完全没必要.因为"for"和"while"最终将运行到"else",我们可以使用通常的行代替.

例如:

for i in range(1, 5):
    print i
else:
    print 'over'
Run Code Online (Sandbox Code Playgroud)

for i in range(1, 5):
    print i
print 'over'
Run Code Online (Sandbox Code Playgroud)

是相同的.

那么为什么Python在"for-else"和"while-else"中有"else"?

Ned*_*der 26

你对for/else的语义是错误的.else子句仅在循环完成时运行,例如,如果未遇到break语句.

典型的for/else循环如下所示:

for x in seq:
    if cond(x):
        break
else:
    print "Didn't find an x I liked!"
Run Code Online (Sandbox Code Playgroud)

将"else"视为与循环体中所有"if"的配对.你的样本是相同的,但在混合中使用"break"语句,它们不是.

对同一想法的更长描述:http://nedbatchelder.com/blog/201110/forelse.html