强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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 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 --version 检查当前版本
  • 推荐使用 pyenv 管理多个 Python 版本
  • 阅读 PEP 8 了解代码风格规范
  • 阅读 PEP 20 了解设计哲学

📌 业务场景: 一家电商公司使用 Python 构建了完整的数据管线:

  1. Scrapy 爬取竞品价格
  2. Pandas 清洗和分析数据
  3. scikit-learn 训练价格预测模型
  4. FastAPI 提供推荐 API
  5. Docker 容器化部署

这展示了 Python “胶水语言” 的强大能力——用统一的语言连接不同系统。


1.8 扩展阅读