🧩 第六章 重用:OOP带来的软件重用和思想重用
📄 一句话概括

类库不是一堆工具函数,是一群可以造对象的图纸——实测标准库 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 秒实验

  1. 用 dir() 数一数你最常用的那个库有多少公开名字,看有几个你用过。
  2. 找一件你以前手写过的事,查一查标准库有没有现成的。

常见误区

  1. 以为类库就是工具函数集合。它主要是类和能造对象的图纸。
  2. 以为要先把类库背下来。记【有没有现成的】,别记名字。
自测三问(点开对答案) 1. 类库是什么? —— 一堆写好的类,import 进来直接用;实测标准库 290 个模块,re 一个模块就有 36 个公开名字。 2. 为什么叫构件群? —— 因为不是一个大工具而是一群能互相配合的零件,前提是所有东西都遵守同一套规矩(Object)。 3. 用类库的第一道门槛是什么? —— 不是会不会用,而是知不知道它存在——先记住这类事有没有现成的,再查具体名字。

相关笔记