【笔记】Python3的模块和包

前言

Python3的模块和包学习笔记

导入模块

导入整个模块

1
import 模块名

导入指定模块的指定方法

1
from 模块名 import 功能名

导入指定模块的所有方法

1
from 模块名 import *

别名

重命名整个模块

1
import 模块名 as 别名

重命名指定功能

1
from 模块名 import 功能名 as 别名

制作模块

  • 自定义模块

定义模块

  • 模块中可以定义变量、函数、类
模块名.py
1
2
3
4
5
6
7
变量名 = 变量值

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

class 类名:
...

使用模块

1
2
3
from 模块名 import 功能名

功能名(参数)
1
2
3
4
5
6
7
8
9
10
import 模块名

# 访问变量
模块名.变量名

# 调用函数
模块名.函数名(参数列表)

# 创建类
模块名.类名(参数列表)

测试模块

  • 将测试代码追加到模块文件末尾

  • 变量__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)

注意事项

  • 自己的模块名不要和已有模块名重复
  • 如果调用模块时,模块名出现同名,则最后一次调用的模块生效
  • 避免定义变量时与模块名重复

all列表的使用

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

def 功能名():
...

  • 在一个目录存放一组有联系的模块,这个目录成为包,目录名即为包名
  • 包的根目录下必须有一个__init__.py的文件,这个文件控制着包的导入行为

新建包

1
2
3
+ 包名
- __init__.py
- 模块名.py

导入包

导入指定模块

1
2
3
import 包名.模块名

包名.模块名.功能名(参数)

导入全部模块

在init文件添加all列表

__init__.py

1
__all__ = ["模块名"]
根据all列表导入全部模块
1
2
3
from 包名 import *

模块名.功能名(参数)

完成

参考文献

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