Python中for/else、while/else和try/else的用法大家用的多吗?

因为与 if/else 的差别较大,会不会在实际工作中造成误解?
Python中for/else、while/else和try/else的用法大家用的多吗?

25 回复

用的不多。我认为不会。


我平时用 try/except/else 比较多,for/elsewhile/else 用得少,但特定场景下很有用。

for/else / while/else

  • else 块在循环正常结束(没被 break 打断)时执行。
  • 典型场景:搜索列表,找到就 break,没找到就在 else 里处理“未找到”的情况。
for item in items:
    if item == target:
        print("找到了")
        break
else:
    print("没找到")  # 循环完整跑完都没break才会执行这里

try/except/else

  • else 块在 没有异常发生 时执行,用来放那些不应该被 try 保护的、但又依赖前面成功执行的代码。
  • 这样能把异常捕获的范围缩到最小,更清晰。
try:
    data = risky_operation()
except SomeError:
    handle_error()
else:
    # 只有上面没出错,才处理数据
    process_data(data)

总结:for/else 适合搜索场景,try/else 能让异常处理更干净。

《流畅的 Python 》中有谈到这个问题,个人觉得,这种用法对于一般人不会造成误解,对于专门研究语言的人,有可能会造成误解。这种用法已经是历史遗留问题,适应就好,不算奇巧淫技。

try/else 偶尔会用

没这种写法之前怎么写代码? 代码不只是给自己看的, 也是给别人看的

谢谢回复
嗯,同意
我也是在《流畅的 Python 》里看到的,对于 for/else 一开始我的理解是错误的。
书上的 for/else 例子
for item in my_list:
if item.flavor == ‘banana’:
break
else:
raise ValueError(‘No banana flavor found!’)

知道,但是一次也没用过。

经常用,超好用

我居然不知道

我只知道 try/else/finally for/else 和 while/else 我怎么没见过,能给我例子我见识一下吗

这个能算 for/else 吗?这命名就是 if/else,只不过放在了 for 循环里而已,层级都不同好吧

其实从语感上说,那个不该叫 else,而应该叫 otherwise。

基本很少有用

这个例子中,进入 else 就表示循环正常结束,而不是通过 break 结束。

当年直接看官网 tutorial 学的 Python,感觉 for/else、while/else 挺好用的。但是工作中不用 Python,偶尔自己写一下的时候都很难想起来

感觉挺好的,,其他语言也该加上

在用,用的还挺多的 记得<<编写高质量 python 代码的 59 个有效方法>>里面还有一节说,不建议用,我个人觉得还行

很少用

很少用

自从知道这个语法了解了以后,while/else 和 try/else 用的很多,非常好用,for/else 用的不多,不过看流畅的 python 里说好像的确不建议多用



这两种跟 try 也是一样,
循环结束后执行,

可配合 break

for else 用的少,其他的都是高频用法吧

用 try else 比较多,其他两个基本不用

用的非常多

回到顶部