当检测到一个错误时,Python解释器就会无法继续执行了,反而会出现一些错误提示,这就是所谓的“异常”,也就是我们常说的BUG。
try:可能发生错误的代码
except:如果出现异常执行的代码
上方与下方相似,下方代码可以获取异常信息
try:可能发生错误的代码
except Exception as e:如果出现异常执行的代码
示例:
try:print(name)
except:print("name变量名称未定义错误")print(f"异常信息为{e}")
try:print(name)
except NameError as e:print("name变量名称未定义错误")print(f"异常信息为{e}")
注意:
- 如果尝试执行的代码的异常类型和要补货的异常类型不一致,则无法捕获异常
当捕获多个异常时,可以把要补货的异常类型的名字放到except后,并使用元组的方式进行书写
try:print(1 / 0)print(name)
except (NameError, ZeroDivisionError) as e:print(f"异常信息为{e}")
else表示的是如果没有异常要执行的代码
try:可能发生错误的代码
except:如果出现异常执行的代码
else:没有异常时执行的代码
示例:
try:print("hello")
except Exception as e:print(f"异常信息为:{e}")
else:print("没有出现异常")
finally 表示无论是否异常都要执行的代码。
示例:
try:# print(1/0)print("hello")
except:print("出现了异常")
finally:print("异常和未出现异常都运行了")
- 异常是具有传递性的。
- 当调用有异常的函数并且没有进行捕获的时候,程序就会报错。
示例:
# 定义一个出现异常的方法
def func_1():print("func_1 开始执行")num = 1 / 0print("func_1 执行结束")# 定义一个无异常的方法,调用会出现异常的方法
def func_2():print("func2 开始执行")func_1()print("func2 执行结束")# 定义一个方法调用上面的方法
def main():# try:func_2()# except Exception as e:# print(f"出现异常了{e}")main()
运行结果:

模块是什么:
一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。
作用:
Python中有很多各种不同的模块,每一个模块都可以帮助我们快速实现一些功能,比如实现和时间行管的功能就可以使用time模块,我们可以认为一个模块是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。
导入方式(语法)
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
常用的组合形式:
# 使用import导入time模块使用sleep功能
import time # 导入Python内置的time模块(time.py代码文件)
print("hello")
time.sleep(5) # 通过. 就可以使用模块内的全部功能(类、函数、变量)
print("world")# 使用from导入time的sleep功能
from time import sleep
print("hello")
sleep(3)
print("world")
# 使用 * 导入time模块的全部功能
from time import * # *表示全部的意思
print("hello")
sleep(3)
print("world")# 使用as给特定功能加上别名
#
from time import sleep as sl
print("hello")
sl(3)
print("world")import time as t
print("hello")
t.sleep(3)
print("world")
Python中已经帮我们实现了很多的模块,不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。
示例:
新建一个Python文件,命名为my_module1.py,并定义test函数
注意:
- 每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须要符合标识符命名规则
- 当导入多个模块的时候,且模块内有同名功能,当调用这个同名功能的时候,调用的是后面导入的模块的功能。
在实际开发中,当开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员会在py文件中添加一些测试信息。如:
def test(a, b):print(a + b)test(1,2)
这样会出现一些问题:
无论是当前文件,还是其他已经导入该模块的文件,在运行的时候都会自动执行‘test’函数的调用。
解决方案:
将测试代码放入 if __ name__ == ‘__ main__’: 函数中
示例:
def test(a, b):print(a + b)if __name__ == '__main__':test(1, 3)
如果一个模块文件中有‘__ all__’变量,当使用’from xxx import *'导入时,只能导入这个列表中的元素。
什么是Python包:
- 从物理上看,包就是一个文件夹,在该文件夹下包含了一个__ init__.py文件,该文件夹可用于包含多个模块文件。
- 从逻辑上看,包的本质依然是模块。
包的作用:
当我们的模块文件越来越多是,包可以帮我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。
import 包名.模块名包名.模块名.函数
示例:

from 包名 import *模块名.函数
注意:
使用这种方式,必须在‘__ init__.py’文件中添加‘__ all__= []’,控制允许导入的模块列表
__ all__针对的是from … import * 这种方式,对 import xxx 无效
示例:

安装第三方包使用Python内置的pip命令即可。
命令格式:
pip install 包名称
示例:
使用这种是直接连接国外的网站进行下载,所以下载速度会很慢。
可以使用国内清华大学提供的一个镜像网站进行下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称


