1 异常
1.1 认识异常
异常语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
try:
f = open('test.txt','r')
except:
f = open('test.txt','w')
捕获异常:
try:
可能发生错误的代码
except 异常类型:
如果捕获到异常执行的代码
try:
print(num)
except NameError: # NameError,这是一个异常类型
print('出现错误')
注意:
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
- 一般try下方只放一行尝试执行的代码
捕获多个指定异常:
try:
print(1/0)
except (NameError,ZeroDivisionError): # NameError,ZeroDivisionError,都是异常类型
print('出现错误')
捕获异常描述信息:
try:
print(num)
except (NameError,ZeroDivisionError) as result:
print(rsult)
捕获所有异常:
try:
print(num)
except Exception as result:
print(rsult)
- 注意:
Exception
是所有程序异常类的父类
1.2 异常的else与finally
else:表示的是没有异常的时候执行的代码
try:
print(num)
except Exception as result:
print(rsult)
else:
print('没有异常啦')
finally:无论是否发生异常都要执行的代码
try:
print(num)
except Exception as result:
print(rsult)
else:
print('没有异常啦')
finally:
f.close()
1.3 异常的传递
技巧:py文件
的打开方法—在文件目录下敲 cmd
回车,在弹出的窗口执行(python3
文件名,注意Tab可以补全文件名)
import time
try:
f = open('test.txt')
try:
while True:
content = f.readline()
if len(cntent) == 0:
break
time.sleep(2) # 时间休眠函数
print('content')
except: # 如果文件在读取过程中产生了异常,那么就会被捕获到
print('意外终止了读取数据')
finally:
f.close()
print('文件已关闭')
except:
print('没有这个文件')
1.4 自定义异常
自定义异常:将不满足要求的代码捕获,自定义异常类
raise
:抛出自定义异常类
# 自定义异常,继承Exception
class ShortInputError(Exception):
def __init__(self,length,min_len):
self.length = length
self.min_len = min_len
# 设置抛出异常的描述信息
def __str__(self):
return f'您输入的密码长度是{self.length},不能少于{self.min_len}个字符'
def main():
try:
con = input('请输入密码:')
if len(con) < 3:
raise ShortInputError(len(con),3)
except Exception as result:
print(result)
else:
print('密码已输入完成!')
2 模块与包
2.1 模块
模块:一个Python文件,包含了Python对象定义和Python语句,模块定义函数,类和变量
导入模块的方式:
- import 模块名
- from 模块名 import 功能名
- from 模块名 import * ,这里的 * 指代的是所有
- from 模块名 as 别名
- from 模块名 import 功能名 as 别名
制作模块
__name__
:系统变量,是模块的标识符,值是:如果是自身模块值是__main__
,否则是当前模块的名字
模块定位顺序:当前目录——shell变量PYTHONPATH
下的每个目录
# 定义模块,新建一个Python文件(my_model),并定义testA函数
def testA(a,b):
print(a + b)
# 测试模块
if __name__ = '__main__':
testA(1,1) # 在其他模块调用的话,这里不会被执行
# 调用模块
import my_model
testA(2,2)
__all__
:如果一个模块文件中有__all__
变量,当使用from xxx import * 导入时,只能导入这个列表的元素
__all__ = ['testA'] # 后续只能调用此模块的testA
def testA():
return A
def testB():
return B
2.2 包
包:将有联系的模块组织放在同一文件夹下,并在文件夹中创建名为__init__.py
的文件,这个文件夹就是包
制作包
[New] – [Python Package] – 输入包名 - -[OK]-- 新建功能模块(有联系的模块)。
注意:
1 新建包后,包内部会自动创建__init__.py
文件,这个文件控制着包的导入行为。
2 必须在__init__.py
文件中添加__all__ = [ ]
,控制允许导入的模块列表
# 定义模块,新建一个Python文件(my_model),并定义testA函数
def testA(a,b):
print(a + b)
# 测试模块
if __name__ = '__main__':
testA(1,1) # 在其他模块调用的话,这里不会被执行
# 调用模块
import my_model
testA(2,2)
导入包
导入:import 包名.模块名
调用:包名.模块名.目标
标签:__,python,except,try,十天,模块,print,异常 From: https://blog.csdn.net/RunningJie/article/details/140506493