1、python的异常
异常的入门案例
try:
print(num)
except Exception as e:
# 打印异常信息
print(str(e))
# 打印异常的堆载信息
import traceback
print(traceback.format_exc())
打印错误的堆载信息,需要引入traceback的依赖
异常中的else
try:
# 可能引发异常的代码
result = 10 / 2
except ZeroDivisionError:
print("除数不能为零")
else:
# 没有发生异常时执行的代码
print("结果:", result)
注意:通常else是表示没有异常的时候执行的代码,但这块代码的内容也可放在 result = 10 /2 下面去执行
异常中的 finally
try:
result = 10 / 2
print(result)
except Exception as e:
print(str(e))
finally:
print('this is finally')
finally 表示所有执行完成后会被执行,不管是否发生错误
异常的对外传递
try:
try:
print(num)
except Exception as e:
print('this is inner err')
# 通过raise关键字把异常向上抛
raise e
except Exception as o:
print(o)
finally:
print('this is finally')
自定义异常
# 自定义异常
class CustomException(Exception):
__slots__ = ['info']
def __init__(self, info):
self.info = info
def __str__(self):
return self.info
try:
raise CustomException('这个是一个错误')
except Exception as e:
print(e)
import traceback
print(traceback.format_exc())
2、python的模块
导入模块的方式
# 直接导入模块,调用方式为 os.listdir
import os
# 以别名的方式导入模块,调用方式为 别名.方法名
import os as abc
from os import path
from os import listdir as readir
# 导入模块中的所有方法
from os import *
模块的调试
def check():
return 'this is check'
# 当在当前文件进行执行的时候,那么该__name__就会变成__main__,可以利用这个特性进行调试和运用分开
if(__name__ == "__main__"):
check()
模块定位顺序
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量下PYTHONPATH下的每个目录
- 如果都找不到,会查看默认目录,UNIX下,默认路径一般为/usr/local/lib/python
注意:
- 自已的文件名不要和已有模块的文件名重复,否则导致模块功能无法使用
- 使用from模块名 import 功能的时候,如果功能名字重复,调用到的最后定义或导入的功能
__all__列表
如果一个模块的文件中有__all__变量,当使用 from xxx import * 导入时, 只能导入这个列表中的元素
def a():
return 'a'
def b():
return 'b'
def c():
return 'c'
__all__=["a"]
这个时候在引用的文件中使用 from xxx import * 导入时,那么调用 b 与 c 方法时会报错
python中包的概念
包将有联系的模块组织在一起,即放到同一文件夹下, 并且这个文件夹创建一个名字为 __init__.py 文件, 那么这个文件夹就称为包
注意:__init__.py控制着包的导入行为