Python 为什么“的目的是什么?”;否则";“a”之后的条款;至于;或;而";环
我是Python初学者。我发现Python 为什么“的目的是什么?”;否则";“a”之后的条款;至于;或;而";环,python,python-3.x,Python,Python 3.x,我是Python初学者。我发现for-else和中的else,而-else是完全没有必要的。因为for和while最终将运行到else,我们可以使用通常的行 例如: for i in range(1, 5): print i else: print 'over' 及 都是一样的 那么为什么Python在for-else和中有else,而-else?关于for/else的语义,您是错的。else子句仅在循环完成时运行,例如,如果没有遇到break语句 典型的for/else循环如
for
-else
和中的else
,而-else
是完全没有必要的。因为for
和while
最终将运行到else
,我们可以使用通常的行
例如:
for i in range(1, 5):
print i
else:
print 'over'
及
都是一样的
那么为什么Python在for
-else
和中有else
,而
-else
?关于for/else的语义,您是错的。else子句仅在循环完成时运行,例如,如果没有遇到break语句
典型的for/else循环如下所示:
for x in seq:
if cond(x):
break
else:
print "Didn't find an x I liked!"
将“else”视为循环体中所有“if”的配对。您的示例是相同的,但在混合中使用“break”语句时,它们就不同了
对同一想法的更详细描述:对于。。。else
语句用于实现搜索循环
特别是,它处理搜索循环找不到任何东西的情况
for z in xrange(10):
if z == 5:
# We found what we are looking for
print "we found 5"
break # The else statement will not execute because of the break
else:
# We failed to find what we were looking for
print "we failed to find 5"
z = None
print 'z = ', z
输出:
we found 5
z = 5
该搜索与
z = None
for z in xrange(10):
if 5 == z:
# We found what we are looking for
break
if z == None:
print "we failed to find 5"
else:
print "we found 5"
print 'z = ', z
请记住,如果搜索列表为空,则的不会初始化z(即[]
)。这就是为什么我们必须确保在搜索后使用z时定义它。以下内容将引发异常,因为在尝试打印时未定义z
for z in []:
if 5 == z:
break
print "z = ",z
输出
print "z = ",z
NameError: name 'z' is not defined
总之,else
子句将在for
循环自然终止时执行。如果for
循环中出现中断或异常,则将不执行else
语句
print "z = ",z
NameError: name 'z' is not defined