📄 一句话概括
同一件事(词频前 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 秒实验
- 把这个 5 行版改一个需求:接上第二段文字再取前 5,看看要改几行。
- 改完再回头看 15 行的类版,判断这一步升级值不值。
常见误区
- 以为 Python 简单就不用学结构。简单的是入门,不是维护。
- 以为一上来就该写类。5 行能解决的事,写类只是多打几行字。
自测三问(点开对答案)
1. 5 行版做了哪三步? —— 切词、数词频、取前 5。 2. 类版多出什么? —— 能接第二段文字、能反复问同一个对象,代价是 15 行。 3. 这对学面向对象意味着什么? —— 写类不是门槛,什么时候该写类才是。- ☐ 回到 课程索引 继续
相关笔记
- 面向对象是软件开发的综合技术 — 本章总纲
- OOP具有结构化语言所没有的三种结构 — 15 行版才用得上
- 将面向对象作为工具熟练掌握 — 什么时候该升级
- 🧩 面向对象是怎样工作的 · 索引