异常,模块和包
1 异常处理
1) 错误
一般来说, 错误分为两种
一种是语法错误, 这一类是不符合程序语言规范
另一种是逻辑错误, 是在程序设计过程中忽略忽视或者错误逻辑导致的
2) 常见的异常
AttributeError 访问的对象没有该属性
IOError 输入/输出异常
ImportError 无法引入模块或包, 基本上是路径问题或名称错误
IndentationError 语法错误一种, 代码没有正确对齐
IndexError 下标越界
KeyError 键不存在
KeyboardInterrupt 在控制台中Ctrl+C中断
NameError 名字错误
SyntaxError 语法错误
TypeError 类型不正确
UnboundLocalError 试图访问一个还未被设置的局部变量
ValueError 类型正确但是值不对
3) 具体异常处理
2 模块
一个py文件就是一个模块
导入模块产生的三件事情
1) 创建一个以模块名称命名的名称空间, 并把模块中的内容放入该名称空间之中
2) 执行一次该模块文件
3) 这个名字会被作为变量, 在执行导入的这个文件中被使用
寻找模块的关键因素
1) 导入模块的时候, 会在sys.path的环境变量中, 自动添加上当前文件路径
2) 导入的处理基点尤其是路径上, 始终是执行这个导入所在文件的路径
寻找模块的顺序
内存中加载完毕的模块 > 内置模块 > sys.path中包含的路径的模块
import导入的用法
1) 直接导入模块, 使用的时候用模块名来取得名称空间的内容
2) import 模块名称 as 新名字, 这样可以给原模块名一个新名字
3) import 模块, 模块2, 模块3... 多个导入
from.. import的用法
这个导入有两个特点
1) 实际导入的是import后面的内容, 且不能使用 . 的形式
2) from后面跟随的是层级关系, 可以说from.. import是带有一定的层级关系来得到导入的包的
多个导入和命名
在import后面同样使用逗号分隔
命名同样可以使用as
全部导入
from .. import *
会导入公开的变量内容, 下划线开头的私有变量不会被导入
可以设定 __all__ = [变量列表] 来限定导入的内容
特殊变量__name__
在执行本文件的时候 __name__ = '__main__'
在被导入之后 __name__ = 模块的名字
导入的时候, Python会生成一个 __pycache__ 目录, 这个目录是缓存, 用于加快导入的
但是执行文件的时候是不会产生这个目录的
3 包
包就是一个文件夹, 该文件夹里有一个文件是 __init__.py 文件
包的导入遵循导入原则
绝对导入和相对导入
1) 绝对导入
以顶点的包为起点, 逐层获取导入内容
2) 相对导入
. 表示当前文件所在的路径
.. 表示当前文件所在的路径的上一层路径
相对导入只能使用from .. import 的方式