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