欢迎光临散文网 会员登陆 & 注册

【python小技巧3】else的用法

2023-01-02 20:21 作者:小倪同学0v0  | 我要投稿

说到 else,新手可能会说不就是 if - else 结构吗?你能想到几个用法呢?

目录

  1. if - else 结构

  2. ... if ... else ... 结构(条件表达式、三目运算符、三元运算符)

  3. for / while - else  结构

  4. try - except - else  结构

一、if - else 结构

这个没啥好说的,入门难度。

硬要说啥的话,就是 else 后面的冒号别漏了。

常见的分支结构有:

  • 单分支:if

  • 双分支:if - else

  • 多分支(无else):if - elif - ...

  • 多分支(有else):if - elif - ... - else

二、... if ... else ... 结构(条件表达式、三元/目运算符)

类似于C语言中的 cond ? a : b

如果仅仅是根据条件确定值的话,使用

不如

来的简洁,而且可读性更高,虽然它俩是完全等价的。

注意:条件表达式的运算符优先级较低,仅次于 lambda 匿名函数表达式,所以如果作为表达式的一部分出现时,应考虑要不要加括号
e.g.

三、for / while - else 结构

It is executed when the loop terminates through exhaustion of the iterable (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement.

——4. More Control Flow Tools — Python 3.8.14 documentation

说人话就是循环自然结束时会执行 else 里的代码,被 break 终止循环时不会执行

以后会专门讲 for 循环(挖坑*1)

四、try - except - else 结构

最完整的处理异常结构是

else 会在 try 语句块内没有遇到异常时执行

现在常见的一些组合包括:

  1. try - except - ...

  2. try - except - ... - finally

  3. try - finally

  4. try - except - ... - else

  5. try - except - ... - else - finally

也就是说:else 和 finally 是可选的,try 和 except 是必须的,在有 finally 的时候 except 是可选的,但它们出现的顺序必须是 try - except - else - finally

执行顺序:

  1. 先执行 try 内的代码

  2. 如果遇到了异常,从上往下依次找符合哪个异常,考虑继承关系(比如 TypeError 继承自 Exception),只会执行一个 except 的代码

  3. 如果没遇到异常,则执行 else 代码块

  4. 无论如何,都会执行 finally 代码块,哪怕前面含有 return, break, continue 等

顺带提一句,永远不要写:

这种代码,最起码写个

至于为什么,以后有机会谈(挖坑*2)

总结:

  1. 分支语句中的 else 用于处理其余的情况

  2. 循环结构中的 else 会在循环没被 break 的时候执行

  3. try 语句中的 else 会在没遇到异常时执行

END

参考资料:

https://docs.python.org/3.8/tutorial/controlflow.html

https://docs.python.org/3.8/reference/compound_stmts.html

以上内容如有错误,欢迎指出!


【python小技巧3】else的用法的评论 (共 条)

分享到微博请遵守国家法律