我们一般看到else,就会想到if,但事实上,Python中循环语句可能带有 else 子句;它会在循环耗尽了可迭代对象 (使用 for) 或循环条件变为假值 (使用 while) 时被执行,但不会在循环被 break 语句终止时被执行。 以下搜索素数的循环就是这样的一个例子:
def seach_prime(n):
"""寻找小于n的素数"""
for i in range(2, n):
for j in range(2, i):
if i % j == 0:
break
else: # 注意这里else的缩进位置,它不属于if语句
# 这一层循环完成,但还没有找到因子
print(i, 'is a prime number')
seach_prime(100000)
当和循环一起使用时,else 子句与 try 语句中的 else 子句的共同点多于 if 语句中的同类子句: try 语句中的 else 子句会在未发生异常时执行,而循环中的 else 子句则会在未发生 break 时执行。
注意:以上代码只是为了举例,没考虑算法问题。
网友评论