Python 中鲜为人知的 else 子句:不止用于条件判断
大多数 Python 开发者对 if-else 烂熟于心,但你知道吗?else 还能和 for、while、try 搭配使用。这些“隐藏技能”能让代码更优雅。
1. 循环中的 else
当循环没有被 break 中断时,else 块会执行。常用于查找元素:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(f"{n} = {x} * {n//x}")
break
else:
print(f"{n} 是质数")
如果循环正常结束(没有触发 break),则进入 else。上面的代码会正确输出 2~9 中的质数。
2. try 中的 else
try-except 后的 else 块仅在没有异常发生时执行。把可能出错的代码放 try 里,成功后才运行的逻辑放 else 中,比塞在 try 末尾更清晰:
try:
data = open("file.txt").read()
except FileNotFoundError:
print("文件不存在")
else:
# 只有读取成功才处理数据
print(f"文件长度: {len(data)}")
这样避免了 try 块过于臃肿,也防止意外捕获 else 内部可能抛出的异常。
小结
for/while-else 适合“未找到则执行默认动作”的场景,try-else 则让成功路径逻辑分离。下次写代码时,试试用 else 让意图更明确吧!