【python】异常

这里写目录标题

异常

当检测到一个错误时,python解释器就无法继续执行了,出现一些错误的提示,这就是异常。

异常的捕获方法

当程序遇到bug,可能整个程序因为bug停止运行;也可能对bug进行提醒,整个程序继续运行。

捕获异常的作用:提前假设某处会出现异常,做好准备,当真正出现异常的时候采取后续手段。

基本语法:

python 复制代码
try:
	可能发生错误的代码
except:
	如果出现异常执行的代码

例如:尝试以'r'模式打开文件,如果文件不存在,则以'w'方式打开

python 复制代码
try:
	f=open('linux.txt','r')
except:
	f=open('linux.txt','w')

打印异常的具体信息

python 复制代码
try:
	print(name)
except NameError as e:
	print(e)

捕获多个异常

可以把要捕获的异常类型的名字,放到except后,并使用元组的方式进行书写。

python 复制代码
try:
	print(1/0)
except(NameError,ZeroDivisionError):
	print('ZeroDivision错误')

捕获所有异常

python 复制代码
try:

except Exception as e:
	print('出现异常')

异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。

python 复制代码
try:
	f=open('test.txt','r')
except Exception as e:
	f=open('test.txt','w')
else:
	print('没有异常')
finally:
	f.close()

异常的传递

异常具有传递性。当函数func1中发生异常,并且没有捕获处理这个异常的时候,异常会传毒到函数func2,当func2也没有捕获这个异常的时候,main函数会捕获这个异常。当所有函数都没有捕获异常的时候,程序就会报错。

python模块

python模块,是一个python文件,以.py结尾,模块能定义函数、类和变量,也能包含可执行的代码。

模块的作用:python中的每一个模块可以快速实现一些功能,比如实现和时间相关的功能就可以使用time模块。可以认为一个模块就是一个工具包。

模块在使用前需要先导入,语法:[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]

常用的组合形式:

python 复制代码
import 模块名
from 模块 import 类、变量、方法等
from 模块名 import *
import 模块名 as 别名	# 设置模块别名
from 模块名 import 功能名 as 别名	# 设置功能别名

例如:导入time模块

python 复制代码
# 导入时间模块
import time

print("开始")
time.sleep(1)
print("结束")

模块可以Ctrl+点击,进入模块查看源代码。

使用from导入time的sleep功能(函数)

python 复制代码
from time import sleep
# from time import * 表示导入全部功能
print("开始")
sleep(5)
print("结束")

自定义模块

每个python文件都可以作为一个模块,模块的名字就是文件的名字。

python 复制代码
# 新建python文件my_moudle1.py
def test(a, b):
	print(a + b)


# 新文件
import my_moudle1

my_moudle1.test(10, 20)

注意:当导入多个模块的时候,且模块内有同名功能,调用到的是后导入的模块的功能

测试模块

在模块内部输入main,会出现if __name__ == '__main__';,在内部加上测试,只有当程序直接执行才会进入if内部,否则无法进入。可以正常测试模块功能,但是在调用时不会显示测试内容。

如果一个模块文件中有'__all__'变量,它的值是一个列表。当使用import *时,只能导入这个列表中的元素。

python包

从物理上看,python包就是一个文件夹,在该文件夹下包含了一个__init__.py文件,该文件夹可用于包含多个模块文件;从逻辑上看,包的本质依然是模块。

当模块文件越来越多时,包可以管理模块,也就是包含多个模块,但包的本质依然是模块。

新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为,通过这个文件表示一个文件夹是python的包,而非普通文件夹。

python 复制代码
# 创建python包:New->Python Package

# 自动生成__init__.py

#新建my_moudle1.py
def info_print1():
	print("模块1")

#新建my_moudle2.py
def info_print2():
	print("模块2")

# 导入自定义包中的模块
# 方式1
import my_package.my_moudle1
import my_package.my_moudle2

my_package.my_noudle1.info_print1()
my_package.my_noudle1.info_print2()

# 方式2
from my_package import my_moudle1
from my_package import my_moudle2

# 方式3
from my_package.my_moudle1 import info_print1
from my_package.my_moudle1 import info_print2
info_print1()
info_print2()

# 通过__all__变量,控制import *
# 在__init__.py中添加__all__列表
from my_package import *
my_moudle1.info_print1()
my_moudle2.info_print2()

安装第三方python包

包可以包含一些python模块,每个模块内含许多功能。一个包就是一堆同类型功能的集合体。

第三方包可以极大地帮助我们提高开发效率。如:

  • 科学计算:numpy包
  • 数据分析:pandas包
  • 大数据计算:pyspark、apache-flink包
  • 图形可视化:matplotlib、pyecharts
  • 人工智能:tensorflow包
    python没有内置,需要安装才可以导入使用。在命令提示符程序中输入pip install 包名称
    由于连接国外网站下载速度很慢,可以连接国内网站进行包的安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
    import 包名称检查是否安装成功
    或者在pycharm右下角配置解释器->interpreter settings->+号->搜索并下载第三方包
相关推荐
databook15 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar16 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805116 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_16 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机1 天前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机1 天前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i1 天前
drf初步梳理
python·django
每日AI新事件1 天前
python的异步函数
python