专栏名称: python实战
Python实战
目录
相关文章推荐
Python爱好者社区  ·  75k,确实可以封神了! ·  3 天前  
Python开发者  ·  裁掉数千人、把工作外包给 ... ·  1 周前  
Python爱好者社区  ·  奔三了,挣多少才正常? ·  4 天前  
Python爱好者社区  ·  吴恩达,yyds ·  4 天前  
Python爱好者社区  ·  1885页Python电子书 ·  1 周前  
51好读  ›  专栏  ›  python实战

Python之奇妙的else

python实战  · 公众号  · Python  · 2017-02-20 23:37

正文

之所以Python — 不仅仅能配合 if 的 else

这个特性不够突出,但是早已经不是什么秘密了。可能是因为很多编程语言都有else语法,但都不支持这一特性,才使得这个特性如此的不明显吧,但它却是Python很有特点的一个特性。

喜欢Python读者君可以加我们Python学习交流 330637182群内有大量的实战和新手资料视频千人大群等你加入。

规则

else不仅能用在if语句中,而且可以用在for、while和try语句中。当然for/else,while/else和try/else从语义的层面很类似,虽然他们和if/else语意差很多,不过还是值得一看。

1、for/else

只有当for执行完毕的时候,else才会执行。

Python学习交流330637182 群内每天更新学习资料

这意味着不能被 break 打断


Python学习交流330637182 群内每天更新学习资料

但是被 continue 跳过是没问题的


Python学习交流330637182 群内每天更新学习资料

不过,显然,用异常打断是不可以的


Python学习交流330637182 群内每天更新学习资料

2、while/else

只有当while因为条件变成falsy,else才会执行


Python学习交流330637182 群内每天更新学习资料

同样的,这也意味着不能被 break 打断


Python学习交流330637182 群内每天更新学习资料

当然,continue 和 exception 的例子于 for是一样的,这里就不做过多的介绍了。

3、try/else

只有当在try中没有发生异常时,else才会执行。


Python学习交流330637182 群内每天更新学习资料

如果try引发了异常,那么else将无法执行


Python学习交流330637182 群内每天更新学习资料

注意:except并不负责处理else中的异常


Python学习交流330637182 群内每天更新学习资料

陷阱

这个规则还有一些小陷阱


Python学习交流330637182 群内每天更新学习资料

由于return强迫流程离开了整个主体快,因此不会出发else

价值

要说else在Python中最大的价值的地方就是使得try/except语法更加清晰可读


         Python学习交流330637182 群内每天更新学习资料

Python学习交流330637182 群内每天更新学习资料

可以看到,这个代码,更加能够体现出except是服务dangerous_call() 而不是 after_call()的。




               


推荐文章
Python爱好者社区  ·  75k,确实可以封神了!
3 天前
Python爱好者社区  ·  奔三了,挣多少才正常?
4 天前
Python爱好者社区  ·  吴恩达,yyds
4 天前
Python爱好者社区  ·  1885页Python电子书
1 周前
中国安全生产网  ·  《人民的名义》,安全人是这么看的……
7 年前
王海昌介入并发症俱乐部  ·  医者有难,岂能不管——并发症群紧急救治同道纪实
7 年前