Python学习笔记4

错误和异常

简介

即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

四个关键词:tryexceptelsefinally

try/except就可以异常捕获,用try包含可能发生问题的代码段,except处理异常

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里

如果没有发生异常则执行else代码块

无论是否发生异常都会执行finally代码块

实例

except后面指定错误类型,只有指定错误类型的错误发生了,才执行except代码块

1
2
3
4
5
6
try:
print("------test------1")
with open("123.txt") as f:
print("------test------2")
except IOError: #文件没找到属于IO异常
pass
1
2
3
4
try:
print(num)
except NameError: #异常类型想要被捕获,需要一致
print("产生错误了")

一个except可以用括号捕获多个错误类型:

1
2
3
4
5
6
7
try:
print("------test------1")
with open("123.txt") as f:
print("------test------2")
print(num)
except (NameError,IOError): #可以将多个异常类型放在括号里
print("产生错误了")

as输出错误描述:

1
2
3
4
5
6
7
8
try:
print("------test------1")
with open("123.txt") as f:
print("------test------2")
print(num)
except (NameError,IOError) as err:
print("产生错误了")
print(err)

Exception是所有异常的父类,可以捕获所有异常:

1
2
3
4
5
6
7
8
try:
print("------test------1")
with open("123.txt") as f:
print("------test------2")
print(num)
except Exception as err: #Exception是所有异常的父类可以承接所有异常
print("产生错误了")
print(err)

如果不需要错误描述,就用except就可以了,它相当于一个通配符也可以捕获所有异常:

1
2
3
4
5
6
7
try:
print("------test------1")
with open("123.txt") as f:
print("------test------2")
print(num)
except:
print("产生错误了")

try也可以嵌套写,套在try或者else里:

1
2
3
4
5
6
7
8
9
10
try:
try:
with open("123.txt") as f:
print(f.readlines())
finally:
print("文件异常")
except Exception as err:
print("发生异常")
finally:
print("程序执行完毕")

小练习

image-20210421142535413

这里我把古诗写到poetry文件里了,因为gushi这名字不太优雅,我也没写函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try:
with open("poetry.txt","w") as f:
poem='''曾经沧海难为水,除却巫山不是云。
取次花丛懒回顾,半缘修道半缘君。'''
f.write(poem)
except Exception as err:
print(err)
try:
with open("copy.txt","w") as f:
with open("poetry.txt","r") as ff:
f.write(ff.readline())
f.write(ff.readline())
except Exception as err:
print(err)
else:
print("复制完毕")

遇到一点小问题就是中文乱码,在Pycharm里设置一下编码就好了:

image-20210421142823074

这三个地方改一下就不乱码了

Python编程规范

1.Python程序第一行加入:

1
2
3
#-*-coding:utf-8-*-
#或者:
#coding=utf-8

这样可以在代码中包含中文

2.使用函数实现单一功能,提高可读性、开发效率和代码重复利用率,方便模块化开发

3.Python程序加入main函数用于测试程序,或者说是主程序入口:

1
if __name__=="__main__":

if __name__=="__main__":里的代码块不会被import导入

所以当py文件被直接运行时,if __name__=="__main__":里的代码块会被执行;当py文件以模块形式被导入时,if __name__=="__main__":里的代码块不会执行。当模块不是主程序运行时,它就不会运行,只是变成了方法供调用

在前面写一些函数,然后在if __name__=="__main__":里面调用,方便我们查看,或者说方便我们控制多个函数之间的关系和流程,更清楚的管理代码的主流程

参考

https://www.bilibili.com/video/BV12E411A7ZQ?p=16

https://blog.csdn.net/yjk13703623757/article/details/77918633

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2021 Blog of Tianze

请我喝杯咖啡吧~

支付宝
微信