🧩 第一章 面向对象:让软件开发变轻松的技术
📄 一句话概括

同一件事(词频前 5)5 行就能出结果,换成类要 15 行;易上手在【标准库够用】,有深度在【同一件事随时能升级成结构】——同一门语言,两副面孔。

📝 本节和前面几节的关系

1.9 讲完本书构成,这篇专栏用一门真实语言给【易上手又有深度】做个体检。

一、实测:5 行到 15 行

切词 1 行(text.split())、数词频 3 行(手动累加字典)、取前 5 共 1 行(sorted)。 三步连着写 5 行就能出结果——这就是【易上手】。 换成类写法要 4 个方法、15 行,但多了两件事:能接第二段文字、能反复问同一个对象。

二、两副面孔各指什么

易上手:不用先学架构、不用先画图,标准库够用,思路直译成代码。 有深度:同一件事随时能升级成结构,而不用重写。 注意这两件事不矛盾:它们只是同一个语言在不同规模下的表现。

三、为什么这对学面向对象重要

说明【写类】不是入门门槛——门槛在【什么时候该写类】。 5 行版没有错,它只是接不了第二段文字。需求一变,它才需要升级。 所以第 4 章讲的类、继承、多态,都是这 15 行版本才用得上的东西。

四、动手 Demo:易上手、有深度的Python

用 5 行写出词频前 5。 再用类写一版,比较行数与多出来的能力。

text = "the cat and the dog and the bird sat on the mat"
words = text.split()
freq = {}
for w in words:
    freq[w] = freq.get(w, 0) + 1
top5 = sorted(freq.items(), key=lambda x: -x[1])[:5]

print(len(words), len(freq), top5[0])   # 12 8 ('the', 4)

实跑输出:

--------------------------------------------------------------------
易上手、有深度的Python
--------------------------------------------------------------------

  同一件事(数一段文字里的词频、取前 5)**从 5 行长到 15 行,看它怎么【先易后深】:**

  步骤         写法                   行数     得到
  --------------------------------------------------
  ① 切词       text.split()           1        12
  ② 数词频     手动累加字典           3        8
  ③ 取前 5     sorted(key=-count)     1        5

      最短能出结果的代码          5 行(三步连着写)
      词种数                      8 个
      最高频的词                  'the'(4 次)

      换成类写法                4 个方法、15 行
      同一批数据结果一致          True
      类版能接第二段文字          是(add_text 后共 9 个词种)

  **三步 5 行就能出结果**——**这就是【易上手】:标准库够用,不用先学架构。**
  **换成类要 15 行,但多了两件当时没有的东西**:能接第二段文字、能反复问同一个对象。
  **这就是【有深度】**:同一件事随时能升级成结构,**而不用重写。**

实测:5 行就能出结果,换成类要 15 行。 易上手在标准库够用,有深度在同一件事能升级成结构而不用重写。 写类不是入门门槛,门槛在【什么时候该写类】。

30 秒实验

  1. 把这个 5 行版改一个需求:接上第二段文字再取前 5,看看要改几行。
  2. 改完再回头看 15 行的类版,判断这一步升级值不值。

常见误区

  1. 以为 Python 简单就不用学结构。简单的是入门,不是维护。
  2. 以为一上来就该写类。5 行能解决的事,写类只是多打几行字。
自测三问(点开对答案) 1. 5 行版做了哪三步? —— 切词、数词频、取前 5。 2. 类版多出什么? —— 能接第二段文字、能反复问同一个对象,代价是 15 行。 3. 这对学面向对象意味着什么? —— 写类不是门槛,什么时候该写类才是。

相关笔记