1、系统模块 sys
1.1 运行时系统相关的信息
1.2 sys模块的数据
数据 描述
---------------------------------------------------------------
sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 ''
sys.modules 已加载模块的字典
sys.version 版本信息字符串
sys.version_info 版本信息的命名元组
sys.platform 操作系统平台名称信息
sys.argv 命令行参数 argv[0] 代表当前脚本程序路径名
sys.copyright 获得Python版权相关的信息
sys.builtin_module_names 获得Python内建模块的名称(字符串元组)
sys模块的函数
===============================================================
函数名 描述
---------------------------------------------------------------
sys.exit([arg]) 退出程序,正常退出时sys.exit(0)
sys.getrecursionlimit() 得到递归嵌套层次限制(栈的深度)
sys.setrecursionlimit(n) 得到和修改递归嵌套层次限制(栈的深度)
2、用户自定义模块
2.1 要求:
模块名以 .py 结尾
模块名必须是表示符的命名规则
避免名称和内建模块冲突
2.2 导入语句:
import 语句
from ...import 语句
from ...import * 语句
2、import语句的导入路径顺序
1)索引内建模块builtin
2)搜索程序的运行路径(当前路径)
3)sys.path提供的路径
3、让用户自定义模块被导入的两种方法
1)将模块安装到(复制)到sys.path提供的路径
2)在运行程时,在sys.path里添加自定义路径
4、模块的加载过程
在导入模块时,模块的所有语句都会执行
如果一个模块已经被导入,则再次导入时不会重新执行模块内的语句
5、模块被导入和执行的过程
1)先搜索相关路径找模块文件(.py)
2)判断是否有此模块对应的.py,如果pyc文件比.py文件新,则直接加载.py文件
3)否则用模块名.py文件生成.pyc并加载执行
6、模块的编译
编译 解释执行
mymod.py -----> mymod.pyc -----> python3
7、模块的属性
7.1 __doc __ 属性,用来绑定文档字符串
模块内的第一次没有赋值给任何变量的字符串为模块的文档字符串
模块内的文档字符串绑定在模块的 doc 属性上
7.2 __file__属性
__file__属性 用于绑定此模块对应的文件路径
7.3 __name__属性
7.3.1 作用:
1)用来记录模块的名字
2)用来判断是否为主模块
7.3.2 说明:
当此模块为主模块运行时, __name__ 的值为‘__main__’
当此模块不是主模块时,__name__ 绑定模块的名字
7.4 模块的 all 列表:
模块中的 __all__列表必须是一个字符串列表
作用:
当用 from mymod import* 导入时,只导入 __all__列表内的属性
7.5 模块的隐藏属性
模块中以“_” 开头的属性,在from xxx import * 导入时将不被导入,通常称这些属性为隐藏属性
8、包(模块包)
8.1 包的定义
包是将模块以文件夹的组织形式进行分组管理的方法
8.2 作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要加载一个或部分模块而不是全部模块
8.3 示例:
mypack/
__init__.py # __init__.py 是常规包内必须存在的文件
menu.py
games/
__init__.py
contra.py
supermario.py
tamks.py
office/
__init__.py
word.py
excel.py
9、包的导入
9.1 导入规则
(1)
import 包名 [as 包新名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
(2)
from 包名 import 模块名 [as 新模块名]
from 包名.子包名 import 模块名 [as 新模块名]
from 包名.子包名.模块名 import 属性名 [as 新属性名]
(3)
from 包名 import *
from 包名.模块名 import *
...
9.2 import 语句搜索引包的路径顺序
1) 当前路径
2)sys.path提供的路径
10、包的相对导入
包的相对导入是指包内模块的相互导入
10.1 语法:
from 相对路径包或模块名 import 属性或者模块名
或
from 相对路径包或模块名 import*
10.2 相对路径
在from 和 import 间可以用相对路径
.代表当前目录
..代表上一级目录
...代表上二级目录
以此类推
10.3 注:
相对导入时不能超出包的外部
10.4 搜索路径:
当前路径
sys.path制定的路径