【笔记】Python3的模块和包

前言

Python3的模块和包学习笔记

Python模块

  • 一个封装了变量、函数、类的Python文件,被称为Python模块,文件名即为模块名
  • 自己的模块名不要和已有模块名重复,如果调用模块时,模块名出现同名,则最后一次调用的模块生效
  • 避免定义变量时与模块名重复

定义模块

模块名.py
1
2
3
4
5
6
7
变量名 = 变量值

def 功能名(形参列表):
...

class 类名:
...

all列表的使用

  • all列表中定义了一组允许被外界调用的功能名,其他没有在列表中的功能无法被外界调用
模块名.py
1
2
3
4
__all__ = ["功能名"]

def 功能名():
...

使用模块

不定义别名

引入整个模块
1
import 模块名
引入指定模块的指定功能
1
2
3
from 模块名 import 变量名

变量名
1
2
3
from 模块名 import 函数名

函数名(实参列表)
1
2
3
from 模块名 import 类名

类名(实参列表)
引入指定模块的所有功能
1
from 模块名 import *

定义别名

重命名整个模块
1
import 模块名 as 模块名别名
重命名指定功能
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__"
测试代码

模块的搜索顺序

  1. 当前目录
  2. shell的变量$PYTHONPATH下的每一个目录
  3. 默认模块存放路径,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
__all__ = ["模块名"]

使用包

导入包内的指定模块

1
2
3
4
5
import 包名.模块名

包名.模块名.变量名
包名.模块名.函数名(实参列表)
包名.模块名.类名(实参列表)

引入包内的全部模块

  • 根据all列表引入全部模块
1
2
3
4
5
from 包名 import *

包名.模块名.变量名
包名.模块名.函数名(实参列表)
包名.模块名.类名(实参列表)

包管理器

传送门

完成

参考文献

哔哩哔哩——Python网红Alex
哔哩哔哩——Python-清风