python学习笔记——程序的异常处理和其他内置函数

  • 1.try-except语句
  • 1.1例子
  • 2. 异常的高级用法
  • 2.1 例子
  • 3.异常语句与finally,else配合使用
  • 3.1例子
  • 4.异常处理小结
  • 5.其他内置函数
  • 5.1例子


1.try-except语句

python异常信息中最重要的是异常类型,它表明异常发生的原因,也是程序处理异常的依据。
try-except基本语法结构如下:

try:
    <语句块1>
except <异常类型>:
    <语句块2>

1.1例子

try:
    num = eval(input("请输入一个数字:"))
    print(num**3)
except:
    print("输入错误,请输入一个整数!")
---------------------------------------------
请输入一个数字:!
输入错误,请输入一个整数!

2. 异常的高级用法

try-except语句可以支持多个except语句,语法如下:

try:
    <语句块1>
except <异常类型1>:
    <语句块2>
    ···
except <异常类型N>:
    <语句块N+1>
except:
    <语句块N+2>

当except语句不指定异常类型时,代表它可以处理任何情况下的异常。

2.1 例子

try:
    vol = "QAZXSWEDCVFRTGBNHYUJMKIOLP"
    num = eval(input("请输入整数,获得自己的幸运字母:"))
    print(vol[num])
except NameError:
    print("请输入一个整数!")
except:
    print("其他错误")
------------------------------------------------------------
请输入整数,获得自己的幸运字母:no
请输入一个整数!
请输入整数,获得自己的幸运字母:!
其他错误

3.异常语句与finally,else配合使用

语法格式:

try:
    <语句块1>
except <异常类型1>:
    <语句块2>
else:
    <语句块3>
finally:
    <语句块4>

简而言之,如果有异常情况出现,走try,except,finally三条路,如果没有异常出现,则走try,else,finally三条路。

3.1例子

try:
    vol = "QAZXSWEDCVFRTGBNHYUJMKIOLP"
    num = eval(input("请输入整数,获得自己的幸运字母:"))
    print(vol[num])
except:
    print("请输入一个整数!且在[0,25]区间内!")
else:
    print("没有发生异常!")
finally:
    print("程序运行结束!")    
-------------------------------------------------------------
请输入整数,获得自己的幸运字母:6
E
没有发生异常!
程序运行结束!
=================== RESTART:  ========================
请输入整数,获得自己的幸运字母:qwq
请输入一个整数!且在[0,25]区间内!
程序运行结束!

4.异常处理小结

Python能识别多种异常类型,但不建议读者编写程序时过度依赖try-except 这种异常处理机制。try-except 异常一般只用来检测极少发生的情况,例如,用户输入的合规性或文件打开是否成功等。对于索引字符串超过范围的情况应该尽量在程序中采用if语句直接判断,而避免通过异常处理来应对这种可能发生的“错误”。

对于面向商业应用的软件产品,稳定性和可靠性是最重要的衡量指标之一。这类软件产品也不会滥用try-except类型语句。因为采用try-except语句会影响代码的可读性,增加代码维护难度,因此,一般只在关键地方采用try-except 类型语句处理可能发生的异常。建议读者结合函数设计统筹应用异常处理。更多经验还需要实践来积累。

——没看懂,到底该什么时候该使用异常语句呢?
——程序员都是对它又爱又恨,其实,想用就用吧,用户体验好才是王道!

5.其他内置函数

python中一共有68个内置函数,前期已经接触到了很多,现在再次对内置函数进行一次拓展,以便接下来的运用。

all()函数一般针对组合数据类型,如果其中每个元素都是True,则返回True,否则返回False。需要注意的是,整数0、空字符串"".空列表[]等都被当作False。

any()函数与all()函数相反,只要组合数据类型中任何一个是True,则返回True,全部元素都是False时返回False。

reversed()函数返回输入组合数据类型的逆序形式。

sorted()函数对一个序列进行排序,默认从小到大排序。

type()函数返回每个数据对应的类型。

5.1例子

>>> all(num)
False
>>> any(num)
True
>>> list(reversed(num))
[5, 4, 3, 2, 1, 0]
>>> sorted(num)
[0, 1, 2, 3, 4, 5]
>>> sorted(num,reverse = True)
[5, 4, 3, 2, 1, 0]
>>> type(num)
<class 'list'>