前言
Python3的模块和包学习笔记
Python模块
- 一个封装了变量、函数、类的Python文件,被称为Python模块,文件名即为模块名
- 自己的模块名不要和已有模块名重复,如果调用模块时,模块名出现同名,则最后一次调用的模块生效
- 避免定义变量时与模块名重复
定义模块
模块名.py1 2 3 4 5 6 7
| 变量名 = 变量值
def 功能名(形参列表): ...
class 类名: ...
|
all列表的使用
- all列表中定义了一组允许被外界调用的功能名,其他没有在列表中的功能无法被外界调用
模块名.py1 2 3 4
| __all__ = ["功能名"]
def 功能名(): ...
|
使用模块
不定义别名
引入整个模块
引入指定模块的指定功能
1 2 3
| from 模块名 import 变量名
变量名
|
1 2 3
| from 模块名 import 函数名
函数名(实参列表)
|
1 2 3
| from 模块名 import 类名
类名(实参列表)
|
引入指定模块的所有功能
定义别名
重命名整个模块
重命名指定功能
1 2 3
| from 模块名 import 变量名 as 变量名别名
变量名别名
|
1 2 3
| from 模块名 import 函数名 as 函数名别名
函数名别名(实参列表)
|
1 2 3
| from 模块名 import 类名 as 类名别名
类名别名(实参列表)
|
测试模块
将测试代码追加到模块文件末尾
变量__name__为内置类属性,用于存储模块名
- 如果是被其他模块调用,则值为模块名
- 如果是独立运行(在模块下调用),则值为
__main__
1 2
| if __name__ == "__main__" 测试代码
|
模块的搜索顺序
- 当前目录
- shell的变量
$PYTHONPATH下的每一个目录
- 默认模块存放路径,UNIX下默认为
/usr/local/lib/python
1 2 3 4 5
| import sys
print(sys.path) for i in sys.path: print(i)
|
Python包
- 一个封装了一个或多个Python模块的目录,被称为Python包,目录名即为包名
- 包的根目录下必须有一个
__init__.py的文件,这个文件控制着包的导入行为
定义包
目录结构
1 2 3
| + 包名 - __init__.py - 模块名.py
|
在init文件添加all列表
__init__.py
使用包
导入包内的指定模块
1 2 3 4 5
| import 包名.模块名
包名.模块名.变量名 包名.模块名.函数名(实参列表) 包名.模块名.类名(实参列表)
|
引入包内的全部模块
1 2 3 4 5
| from 包名 import *
包名.模块名.变量名 包名.模块名.函数名(实参列表) 包名.模块名.类名(实参列表)
|
包管理器
传送门
完成
参考文献
哔哩哔哩——Python网红Alex
哔哩哔哩——Python-清风