📄 一句话概括
类库不是一堆工具函数,是一群可以造对象的图纸——实测标准库 290 个模块,re 一个模块就有 36 个公开名字。
📝 本节和前面几节的关系
6.1 讲复用单位,这一节讲最现成的那一类:别人写好的类。
一、类库是什么
一堆写好的类,import 进来直接用。
实测 Python 标准库有 290 个模块;抽三个常用类库数公开名字:collections 10 个、json 12 个、re 36 个。
这些名字里绝大多数是类或函数,拿来就能用,不用知道它怎么实现的。
二、为什么叫【构件群】
因为它不是【一个大工具】,是一群能互相配合的零件。
json 的 JSONDecoder 可以和 re 的模式配合,collections 的容器可以装任何对象——前提是所有东西都遵守同一套规矩(6.4 的 Object)。
所以你的程序 = 自己写的几个类 + 类库里借来的几百个类。
三、用类库的第一道门槛
不是会不会用,是知不知道它存在。
实测 re 一个模块就有 36 个公开名字——你不会全记住,也没必要。
正确姿势:先记住【这类事有没有现成的】,再查具体名字。
这就是 6.10 说的【路标】要解决的问题。
四、别自己造
自己写 JSON 解析、自己写容器、自己写正则——除了练手,没有理由。 类库的价值不只是省时间,更是它替你踩过那些边界。 判断标准:这件事是不是【通用的、有公认答案的】?是就用现成的。
五、动手 Demo:类库是 OOP 的软件构件群
数一数标准库有多大,再抽三个类库看公开名字有多少。 这些名字就是能直接拿来用的构件。
import sys
print(len(sys.stdlib_module_names))
for name in ("collections", "json", "re"):
mod = __import__(name)
names = [n for n in dir(mod) if not n.startswith("_")]
print(name, len(names), names[:3])
实跑输出:
--------------------------------------------------------------------
类库是 OOP 的软件构件群
--------------------------------------------------------------------
类库就是**一堆写好的类**,你 import 进来直接用。实测它的体量:
标准库模块数 290 个
抽三个常用类库,数一数公开名字有多少:
类库 公开名字数 举三个
-------------------------------------------------------------------------
collections 10 ChainMap/Counter/OrderedDict
json 12 JSONDecodeError/JSONDecoder/JSONEncoder
re 36 A/ASCII/DEBUG
**这些名字里,绝大多数是【类或函数】,拿来就能用。**
**所以【类库】这个词很准:它不是一堆工具函数,是一群可以造对象的图纸。**
**你的程序 = 自己写的几个类 + 类库里借来的几百个类。**
实测:标准库 290 个模块;collections 10 个、json 12 个、re 36 个公开名字。
类库是一群可以造对象的图纸,不是一堆工具函数——你的程序就是自己的类加借来的几百个类。
30 秒实验
- 用
dir()数一数你最常用的那个库有多少公开名字,看有几个你用过。 - 找一件你以前手写过的事,查一查标准库有没有现成的。
常见误区
- 以为类库就是工具函数集合。它主要是类和能造对象的图纸。
- 以为要先把类库背下来。记【有没有现成的】,别记名字。
自测三问(点开对答案)
1. 类库是什么? —— 一堆写好的类,import 进来直接用;实测标准库 290 个模块,re 一个模块就有 36 个公开名字。 2. 为什么叫构件群? —— 因为不是一个大工具而是一群能互相配合的零件,前提是所有东西都遵守同一套规矩(Object)。 3. 用类库的第一道门槛是什么? —— 不是会不会用,而是知不知道它存在——先记住这类事有没有现成的,再查具体名字。- ☐ 下一节(6.3 标准类库是语言规范的一部分)
相关笔记
- 标准类库是语言规范的一部分 — 谁保证它一直在
- 设计模式是类库探险的路标 — 怎么在类库里找路
- ⚙️ 程序是怎样跑起来的(第3版) · 索引 — 标准库与运行时
- 🧩 面向对象是怎样工作的 · 索引