第 28 课 · 阶段四 · 函数与模块
模块与包
代码多了就要拆分。这一课学习模块与包的机制、import 的四种写法、__name__ 魔术变量,以及用 pip 安装第三方库。
🎯 学完本课你将掌握
- 理解模块、包的概念与区别
- 掌握 import 的多种写法
- 理解 if __name__ == '__main__' 的作用
- 会用 pip 安装第三方库
一、什么是模块与包
模块:一个 .py 文件就是一个模块。把相关功能放进一个文件,方便复用。
包:包含 __init__.py 的文件夹,用来组织多个模块。
二、import 的四种写法
import 写法.py
1import math # 方式1:导入整个模块2print(math.sqrt(16)) # 4.0 用 模块.函数 调用34from math import sqrt # 方式2:只导入某个函数5print(sqrt(25)) # 5.0 直接用67from math import pi, sqrt # 方式3:导入多个8from math import * # 方式4:导入全部(不推荐)910import math as m # 取别名11print(m.pi) # 3.141592...⚠️ 注意
不推荐 from math import *,会污染命名空间、可能覆盖同名变量。
三、自己创建模块
my_math.py(先创建这个文件)
1def add(a, b):2 return a + b34def mul(a, b):5 return a * b67print("my_math 模块被导入") # 导入时这行会执行使用自己的模块.py
1import my_math2print(my_math.add(3, 4)) # 73print(my_math.mul(3, 4)) # 12四、__name__ == '__main__'
直接运行某文件时,该文件的 __name__ 是 '__main__';被 import 时是模块名。利用这个特性,把“测试代码”保护起来。
main 保护.py
1def add(a, b):2 return a + b34if __name__ == "__main__":5 # 只有直接运行本文件时才执行下面的测试6 print(add(1, 2))7 print("这是直接运行时才输出的")✅ 要点
这是 Python 的标准写法:把可执行入口放 if __name__ == '__main__' 里,既可以直接跑,也能被别处安全导入。
五、pip 安装第三方库
- 1打开终端(Windows 用 cmd,macOS/Linux 用 terminal)。
- 2执行 pip install 库名,例如 pip install requests。
- 3Python3 环境下可能用 pip3。
- 4安装后 import 即可使用。
pip 命令
1pip install requests # 安装2pip install numpy pandas # 一次装多个3pip uninstall requests # 卸载4pip list # 查看已安装5pip show requests # 查看某个库信息六、常见错误与解决
常见错误与解决
| 错误现象 | 原因 / 解决方法 |
|---|---|
ModuleNotFoundError: No module named 'xxx' | 没安装该库,或名字写错,pip install 后再试。 |
pip 不是内部命令 | Python 的 Scripts 目录没加 PATH,回到第 2 课补环境变量。 |
import 自己写的模块失败 | 确认两个文件在同一目录,或在运行目录下;或把目录设为包并加 __init__.py。 |
✍️ 小练习
创建一个 tools.py 放两个函数,在另一个文件里用两种 import 方式调用它;再用 pip 安装一个库(如 requests)并验证 import。
📌 本节小结
一个 .py 就是模块,文件夹+__init__.py 是包;import 有四种写法;__name__ == '__main__' 保护测试代码;pip install 装遍天下库。模块化是工程化的第一步。