1. 课前甜点
用前端视角回答「为什么学 Python」:典型场景、与 Shell/C/Java/Perl 的取舍,以及本教程的阅读顺序。
1.1 Python 适合你做什么
| 方向 | 例子 |
|---|---|
| 自动化 | 批处理文件、日志 / 文本清洗、定时任务、胶水脚本 |
| 工具与小产品 | CLI、简单 GUI(如 Tk)、小规模内部系统 |
| 跨界协作 | 给 C/C++/Java 库写测试与 demo、协议 / 数据格式验证 |
把 Python 想成「强标准库的 JS 运行时 + 一等文件系统」往往够用来决定要不要学:同样的脚本,用 Node 也能写,但处理本地文件、CSV、sqlite、argparse 这类事,Python 经常更少依赖。
1.2 和常见技术栈怎么比
- 相对 Shell/Batch:能做完整应用逻辑、结构化数据、网络与 UI,不止「把几条命令拼起来」。
- 相对 C/Java:解释执行,改完就跑;跨平台成本通常更低,适合验证想法与脚本层。
- 相对 Perl/Awk:通用语法与现代标准库对非文本场景更友好,长期维护读起来更省力。
小例子:前端里你用 JSON.parse 读配置;Python 同样一行 json.load,但还能顺手用 pathlib 拼路径、用 venv 隔离依赖——整条链路都在标准库里。
from __future__ import annotations
import json
from pathlib import Path
def load_config(path: Path) -> dict:
with path.open(encoding="utf-8") as f:
return json.load(f)1.3 语言特性(前端可对照的要点)
| 概念 | Python | 可联想 |
|---|---|---|
| 类型系统 | 动态类型,运行时检查 | JS;可选 typing 注解(非强制,不对运行期自动兜底) |
| 代码块 | 缩进是语法 | 没有 {},换用缩进层级表达块 |
| 执行模型 | 解释执行 + REPL | 像 node 交互环境,适合验证小段逻辑 |
| 复用单位 | 模块 .py、包(目录) | 接近「一个文件一个模块」,导入语义和 ESM 不同 |
可扩展性:热点可用 C 扩展;也可把 Python 嵌入别的程序里当脚本层(与在浏览器里跑 JS 不同层,但角色类似)。
// TS:类型主要在编译期;运行期对象仍是“松的”
type User = { id: number }
const u = { id: 1, extra: true } as User // 可能骗过类型检查者# Python:注解可选;运行期不会拦你多塞字段(除非你用 dataclass/slot 等约束)
class User:
def __init__(self, id: int) -> None:
self.id = id
u = User(1)
u.extra = True # 合法,动态属性1.4 冷知识与学习姿势
- 名字来源:Monty Python 喜剧团,不是蟒蛇。
- 最有效练习:读完一小节就在解释器里敲一遍;本教程示例彼此独立,可离线阅读。
- 建议阅读顺序:解释器与运行方式 → 表达式与内置类型 → 函数与控制流 → 模块 / 包 → 异常与类 → 标准库与虚拟环境。
权威延伸:Python 入门(官方) 与本章对应的原文在教程最前几节;标准库见 library index。