1 异常
异常:程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并提示一些错误信息。
抛出(raise)异常:程序停止执行并且提示错误信息这个动作。
在程序开发时,难以将所有特殊情况处理得面面俱到,通过异常捕获针对突发事件做集中处理,从而保证程序的稳定性和健壮性。
1.1 捕获异常
try:
尝试执行的代码
except 错误类型1:
出现错误1的处理
except (错误类型2,错误类型3):
出现错误2和3的处理
except Exception as result:
捕获未知错误(result记录错误信息)
else:
没有异常才会执行的代码
finally:
无论是否有异常都会执行的代码
1.2 抛出异常
在开发中,除了代码执行出错 Python 解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常。
Python中提供了一个Exception异常类,通过创建一个Exception类的对象,使用raise关键字抛出异常对象。
def input_pwd():
pwd = input("请输入密码:")
if len(pwd > 8):
return pwd
ex = Exception("密码长度不够!")
raise ex
try:
print(input_pwd()
except Exception as result:
print(f"发现错误: {result}")
2 模块和包
2.1 模块
所有以扩展名py结尾的Python源代码文件都是模块。模块名也是标识符,需要符合标识符的命名规则。
在模块中定义的全局变量、函数与类都是提供给外界直接使用的工具,模块类似于工具包,要想使用这个工具包中的工具,需要先导入这个模块:
-
import 模块名 as 别名
,导入之后使用模块名.工具名
使用具体的工具 -
from 模块名 import 工具名
,导入具体的工具之后,不需要通过模块名.
,可直接使用;如果两个模块,存在同名的函数,后导入模块的函数,会 覆盖掉先导入的函数。import代码统一写在代码顶部,更容易及时发现冲突,一旦发现冲突,可使用 as 关键字给其中一个工具起一个别名,一般不推荐使用 from…import * ,若存在函数重名,使用此方式导入难以发现问题。
Python解释器在导入模块时,会先搜索当前目录是否存在导入的模块, 如果存在则直接导入,若不存在,则再系统目录中进行搜索。通过模块的内置属性 __file__
可以查看模块完整路径。
2.2 包
包是一个包含多个模块的特殊目录,目录下有一个__init__.py
文件,包名的命名方式和变量名一致(小写字母 + _
),使用 import 包名可以导入包中所有的模块。
要在外界使用包中的模块,需要在 __init__.py
中指定对外界提供的模块列表(from 路径 import 模块名
)