Python模块
想象你在一个巨大的厨房里做饭。如果所有锅碗瓢盆、食材调料都堆在地上,找把盐都要翻半天——这就是把所有代码写在一个文件里的感觉。
模块就是把厨房分成不同储物柜:餐具柜、调料架、冰柜……每个柜子只放一类东西。代码里,一个 .py 文件就是一个模块,你可以把相关的函数、类、变量放在里面。好处一目了然:
- 复用:同一份代码,在多个地方
import就能用。 - 命名空间隔离:A 模块的
sum函数和 B 模块的sum函数不会打架。 - 易维护:改一个功能只需找到对应的
.py文件,不用在几万行代码里大海捞针。
速查表
| 概念 | 说明 |
|---|---|
| 模块(module) | 一个以 .py 结尾的文件;把一组相关的函数/类/变量放在一起,方便复用与维护。 |
| 模块名 | 文件名去掉 .py,例如 tools.py → tools。 |
| 导入(import) | 在使用模块中的功能前必须先导入;导入后通过“模块名/别名.功能名”或直接“功能名”调用。 |
| all | 模块级变量:指定 from 模块名 import * 时,允许被导入的名称列表。 |
| 包(package) | 本质是文件夹,里面包含多个模块(.py);通常包含 __init__.py,用于组织管理模块(包本身也可被当作模块导入)。 |
定义
一个以 .py 结尾的文件,就是一个模块。
比如你创建一个 tools.py,里面写:
python
# tools.py
def add(a, b):
return a + b
PI = 3.14159这个 tools.py 就是一个叫做 tools 的模块。模块名就是文件名去掉了 .py。
⚠️ 命名规则:模块名应该用小写字母,可加下划线,不能以数字开头,也不要用 Python 关键字。虽然中文也能运行,但强烈不推荐。
模块的导入方式
- 在使用模块中提供的功能之前,必须得先导入,再使用。
- 导入模块的具体语法如下:
| 导入形式 | 代码样例 | 调用方式(说明) | 调用方式(示例) |
|---|---|---|---|
| import 模块名 | import random, os | 模块名.功能名 | random.randint(10, 100) |
| import 模块名 as 别名 | import random as rd | 别名.功能名 | rd.randint(10, 100) |
| from 模块名 import 功能名 | from random import randint,choice | 功能名 | randint(10, 100) |
| from 模块名 import 功能名 as 别名 | from random import randint as rint | 别名 | rint(10, 100) |
| from 模块名 import * | from random import * | 功能名 | randint(10, 100) |
自定义模块
当开发一些复杂的项目,为了让项目结构更清晰,更便于项目的维护管理 及 代码的复用,可能会把一个项目拆分若干个模块


_ _ all _ _
_ _all _ _是一个模块级别的特殊变量,用于指定from 模块名 import * 时会导入哪些功能

包
- 包: 本质就是一个文件夹,该文件夹中可以包含若干python模块(.py文件),文件夹下还包含了一个_ *init _ _.py。
* _ _*init* _是一个特殊文件。只要目录下存在这个文件,Python 就视其为常规包(即使文件为空)。 - 作用:模块文件较多时,用来管理多个模块。(包的本质也是一个模块)

包的导入方式

注意: 在通过’from 包名 import *’ 导入全部模块的时候,需要在_ _ init _ _ .py 文件中添’_ _ all _ _ =[]’,控制允许导入的模块列表
