Python 编程教程 / 01 - Python 概述
第 01 章:Python 概述
了解 Python 的前世今生,理解其设计哲学,掌握版本演进脉络。
1.1 Python 的历史
1.1.1 起源
Python 由荷兰程序员 Guido van Rossum(吉多·范罗苏姆)于 1989 年圣诞节期间开始开发,1991 年发布第一个公开版本(0.9.0)。
名字来源并非蟒蛇,而是英国喜剧团体 Monty Python’s Flying Circus。
1.1.2 版本时间线
| 年份 | 版本 | 里程碑 |
|---|---|---|
| 1991 | 0.9.0 | 首次公开发布,支持类、函数、异常处理 |
| 1994 | 1.0 | 正式发布,加入 lambda、map、filter |
| 2000 | 2.0 | 加入列表推导、垃圾回收、Unicode 支持 |
| 2008 | 3.0 | 不向后兼容的重大重构,全面 Unicode |
| 2015 | 3.5 | 类型提示(Type Hints)、async/await |
| 2018 | 3.7 | dataclasses、breakpoint() |
| 2021 | 3.10 | 结构化模式匹配(match/case) |
| 2022 | 3.11 | 性能提升 10–60%、异常组 |
| 2023 | 3.12 | 移除 distutils、改进 f-string |
| 2024 | 3.13 | JIT 编译器实验、free-threaded 模式 |
1.1.3 Python 2 vs Python 3
Python 2 于 2020 年 1 月 1 日正式停止维护。所有新项目应使用 Python 3。
| 差异点 | Python 2 | Python 3 |
|---|---|---|
print "hello" | print("hello") | |
| 整除 | 3 / 2 = 1 | 3 / 2 = 1.5 |
| 字符串 | ASCII 默认 | Unicode 默认 |
| 编码 | # -*- coding: utf-8 -*- | 默认 UTF-8 |
| 输入 | raw_input() | input() |
1.2 设计哲学:The Zen of Python
在 Python 交互式环境中输入以下命令:
>>> import this
输出全文:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
核心原则解读
| 原则 | 含义 | 示例 |
|---|---|---|
| 优美优于丑陋 | 代码应当具有美感 | 使用列表推导而非冗长循环 |
| 显式优于隐式 | 明确意图 | func(arg=value) 优于位置参数 |
| 简单优于复杂 | 优先选择简单方案 | 使用内置函数而非自造轮子 |
| 可读性很重要 | 代码被阅读的次数远多于编写 | 有意义的变量名 |
| 拒绝猜测的诱惑 | 不确定时不要假设 | 类型转换要显式 |
1.3 CPython 的实现机制
Python 是一门解释型语言,但实际执行过程包含编译步骤:
源代码 (.py)
↓ [编译]
字节码 (.pyc / __pycache__)
↓ [解释执行]
CPython 虚拟机
Python 的多种实现
| 实现 | 说明 | 适用场景 |
|---|---|---|
| CPython | 官方实现,C 语言编写 | 通用开发 |
| PyPy | JIT 编译,速度提升 5–10 倍 | 计算密集型 |
| Jython | 运行在 JVM 上 | Java 集成 |
| IronPython | 运行在 .NET 上 | .NET 集成 |
| MicroPython | 微控制器优化 | 嵌入式开发 |
| Cython | 编译为 C 扩展 | 性能关键模块 |
1.4 适用场景
✅ Python 擅长的领域
| 领域 | 代表库/框架 | 典型应用 |
|---|---|---|
| Web 开发 | Django, FastAPI, Flask | API 服务、网站后端 |
| 数据科学 | NumPy, Pandas, Matplotlib | 数据分析、可视化 |
| 机器学习 | PyTorch, TensorFlow, scikit-learn | 模型训练、推理 |
| 自动化运维 | Ansible, Fabric, Paramiko | 服务器管理、CI/CD |
| 爬虫 | Scrapy, BeautifulSoup, Playwright | 数据采集 |
| 脚本与工具 | subprocess, pathlib | 文件处理、系统管理 |
| 科学计算 | SciPy, SymPy | 数值模拟、符号运算 |
| 教育 | Turtle, Jupyter | 编程入门、交互式学习 |
❌ Python 不擅长的领域
| 领域 | 原因 | 替代方案 |
|---|---|---|
| 系统级编程 | 无法直接操作内存 | C / Rust |
| 移动端开发 | 缺乏原生支持 | Swift / Kotlin |
| 前端开发 | 浏览器不支持 | JavaScript / TypeScript |
| 实时系统 | GIL 限制并发 | Go / Elixir |
| 游戏引擎 | 性能不足 | C++ / C# |
1.5 Python 生态系统
1.5.1 包管理
# 安装第三方包
$ pip install requests
# 从 requirements.txt 安装
$ pip install -r requirements.txt
# 使用国内镜像源
$ pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
1.5.2 核心生态一览
Python 生态系统
├── 包管理:pip, poetry, pdm, uv, conda
├── 虚拟环境:venv, virtualenv, conda
├── 测试:pytest, unittest, hypothesis
├── 代码质量:ruff, black, mypy, pylint
├── 文档:Sphinx, MkDocs
├── Web:Django, Flask, FastAPI
├── 数据:Pandas, NumPy, Polars
├── ML:PyTorch, TensorFlow, scikit-learn
└── 部署:Docker, Gunicorn, uvicorn
1.5.3 PyPI(Python Package Index)
PyPI 是 Python 官方的第三方包仓库:
- 官网:https://pypi.org/
- 截至 2025 年,超过 50 万个 包
- 每月下载量超过 数十亿次
1.6 Python 与其他语言对比
| 特性 | Python | JavaScript | Java | Go | Rust |
|---|---|---|---|---|---|
| 类型系统 | 动态 | 动态 | 静态 | 静态 | 静态 |
| 执行方式 | 解释 | JIT | 编译+JIT | 编译 | 编译 |
| 学习曲线 | 低 | 低 | 中 | 中 | 高 |
| 性能 | 中 | 中高 | 高 | 高 | 极高 |
| 并发模型 | GIL | 事件循环 | 线程 | Goroutine | 无数据竞争 |
| 典型用途 | 数据/自动化 | Web 全栈 | 企业应用 | 云原生 | 系统编程 |
1.7 注意事项
🔴 注意:
- 不要在生产环境使用 Python 2,它已于 2020 年停止维护
- Python 3.8 也已停止安全更新,建议使用 3.11+
GIL(Global Interpreter Lock)限制了 CPU 密集型任务的多线程性能- Python 的动态类型带来灵活性的同时也增加了运行时错误的风险
💡 提示:
📌 业务场景: 一家电商公司使用 Python 构建了完整的数据管线:
- Scrapy 爬取竞品价格
- Pandas 清洗和分析数据
- scikit-learn 训练价格预测模型
- FastAPI 提供推荐 API
- Docker 容器化部署
这展示了 Python “胶水语言” 的强大能力——用统一的语言连接不同系统。
1.8 扩展阅读
- Python 官方文档
- PEP 索引
- CPython 源码
- Real Python - Python 3 History
- Python Developer’s Guide
- 书籍推荐:《流畅的 Python》(Fluent Python)by Luciano Ramalho