Python中"for"循环后面使用"else"有什么用?

6 投票
3 回答
4859 浏览
提问于 2025-04-18 06:22

看起来下面的两个代码输出的结果是一样的,那为什么在Python的“for”循环后面还需要“else”块呢?

代码1:

for i in range(10):
    print i
else:
    print "after for loop"

代码2:

for i in range(10):
    print i

print "after for loop"

提前谢谢你。

3 个回答

1

这个最初是为了去掉程序中的所有“GOTO”语句,而不使用标志位。它的意思是“没有中断”。

for i, value in enumerate(sequence):
    if value == target:
        break
else:           #<-- if we finish the loop and did not encounter break, return -1
    return -1
return 1        #<-- if we did encounter break, return 1

你可以在这里观看Raymond Hettinger在Pycon上的演讲,提到了for/else结构:将代码转变为优美、符合习惯的Python

4

for循环没有被break中断时,else部分会在for循环结束后执行。

for i in range(10):
    print i
    if i == 8:
        break # termination, no else    
else:
    print "after for loop"
7

来自文档的说明:

循环语句可以有一个 else 子句;当循环因为列表用完(用 for 循环)或者条件变为假(用 while 循环)而结束时,这个 else 子句会被执行。但是,如果循环是因为 break 语句被强制终止的,那就不会执行这个 else 子句。

点击链接可以查看这个用法的例子。

撰写回答