# Python 教程

小技巧

本教程被设计为针对新入门 Python 语言的 程序员，而 不是 新入门编程的 初学者。

Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构，还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质，使它成为多数平台上写脚本和快速开发应用的理想语言。

Python 解释器及丰富的标准库针对所有主流系统平台以源代码或二进制形式在 Python 网站 https://www.python.org/ 上免费提供，并可自由分发。 该网站还包含许多免费的第三方 Python 模块、程序和工具以及附加文档的分享链接。

Python 解释器易于扩展，使用 C 或 C++（或其他 C 能调用的语言）即可为 Python 扩展新功能和数据类型。Python 也可用作定制软件中的扩展程序语言。

本教程非正式地介绍了 Python 语言和系统的基本概念和特性。 请注意它预期你对于编程的总体概念有基本的了解。 准备好一个 Python 解释器随时上手练习会很有帮助，但所有的示例都是完备自足的，因此本教程也可以离线阅读。

标准库与模块的内容详见 Python 标准库。Python 语言参考手册 是更正规的语言定义。如要编写 C 或 C++ 扩展请参考 扩展和嵌入 Python 解释器 和 Python/C API 参考手册。此外，深入讲解 Python 的书籍也有很多。

本教程对每一个功能的介绍并不完整，甚至没有涉及全部常用功能，只是介绍了 Python 中最值得学习的功能，旨在让读者快速感受一下 Python 的特色。学完本教程的读者可以阅读和编写 Python 模块和程序，也可以继续学习 Python 标准库。

强烈推荐阅读 术语对照表。

- 1. 课前甜点
- 2. 使用 Python 的解释器
  - 2.1. 唤出解释器
    - 2.1.1. 传入参数
    - 2.1.2. 交互模式
  - 2.2. 解释器的运行环境
    - 2.2.1. 源文件的字符编码
- 3. Python 速览
  - 3.1. Python 用作计算器
    - 3.1.1. 数字
    - 3.1.2. 文本
    - 3.1.3. 列表
  - 3.2. 走向编程的第一步
- 4. 更多控制流工具
  - 4.1. `if` 语句
  - 4.2. `for` 语句
  - 4.3. `range()` 函数
  - 4.4. `break` 和 `continue` 语句
  - 4.5. 循环的 `else` 子句
  - 4.6. `pass` 语句
  - 4.7. `match` 语句
  - 4.8. 定义函数
  - 4.9. 函数定义详解
    - 4.9.1. 默认值参数
    - 4.9.2. 关键字参数
    - 4.9.3. 特殊参数
      - 4.9.3.1. 位置或关键字参数
      - 4.9.3.2. 仅位置参数
      - 4.9.3.3. 仅限关键字参数
      - 4.9.3.4. 函数示例
      - 4.9.3.5. 小结
    - 4.9.4. 任意实参列表
    - 4.9.5. 解包实参列表
    - 4.9.6. Lambda 表达式
    - 4.9.7. 文档字符串
    - 4.9.8. 函数注解
  - 4.10. 小插曲：编码风格
- 5. 数据结构
  - 5.1. 列表详解
    - 5.1.1. 用列表实现堆栈
    - 5.1.2. 用列表实现队列
    - 5.1.3. 列表推导式
    - 5.1.4. 嵌套的列表推导式
    - 5.1.5. Unpacking in Lists and List Comprehensions
  - 5.2. `del` 语句
  - 5.3. 元组和序列
  - 5.4. 集合
  - 5.5. 字典
  - 5.6. 循环的技巧
  - 5.7. 深入条件控制
  - 5.8. 序列和其他类型的比较
- 6. 模块
  - 6.1. 模块详解
    - 6.1.1. 以脚本方式执行模块
    - 6.1.2. 模块搜索路径
    - 6.1.3. “已编译的” Python 文件
  - 6.2. 标准模块
  - 6.3. `dir()` 函数
  - 6.4. 包
    - 6.4.1. 从包中导入 *
    - 6.4.2. 相对导入
    - 6.4.3. 多目录中的包
- 7. 输入与输出
  - 7.1. 更复杂的输出格式
    - 7.1.1. 格式化字符串字面值
    - 7.1.2. 字符串 format() 方法
    - 7.1.3. 手动格式化字符串
    - 7.1.4. 旧式字符串格式化方法
  - 7.2. 读写文件
    - 7.2.1. 文件对象的方法
    - 7.2.2. 使用 `json` 保存结构化数据
- 8. 错误和异常
  - 8.1. 语法错误
  - 8.2. 异常
  - 8.3. 异常的处理
  - 8.4. 触发异常
  - 8.5. 异常链
  - 8.6. 用户自定义异常
  - 8.7. 定义清理操作
  - 8.8. 预定义的清理操作
  - 8.9. 引发和处理多个不相关的异常
  - 8.10. 用注释细化异常情况
- 9. 类
  - 9.1. 名称和对象
  - 9.2. Python 作用域和命名空间
    - 9.2.1. 作用域和命名空间示例
  - 9.3. 初探类
    - 9.3.1. 类定义语法
    - 9.3.2. Class 对象
    - 9.3.3. 实例对象
    - 9.3.4. 方法对象
    - 9.3.5. 类和实例变量
  - 9.4. 补充说明
  - 9.5. 继承
    - 9.5.1. 多重继承
  - 9.6. 私有变量
  - 9.7. 杂项说明
  - 9.8. 迭代器
  - 9.9. 生成器
  - 9.10. 生成器表达式
- 10. 标准库简介
  - 10.1. 操作系统接口
  - 10.2. 文件通配符
  - 10.3. 命令行参数
  - 10.4. 错误输出重定向和程序终止
  - 10.5. 字符串模式匹配
  - 10.6. 数学
  - 10.7. 互联网访问
  - 10.8. 日期和时间
  - 10.9. 数据压缩
  - 10.10. 性能测量
  - 10.11. 质量控制
  - 10.12. 自带电池
- 11. 标准库简介 —— 第二部分
  - 11.1. 格式化输出
  - 11.2. 模板
  - 11.3. 使用二进制数据记录格式
  - 11.4. 多线程
  - 11.5. 日志记录
  - 11.6. 弱引用
  - 11.7. 用于操作列表的工具
  - 11.8. 十进制浮点运算
- 12. 虚拟环境和包
  - 12.1. 概述
  - 12.2. 创建虚拟环境
  - 12.3. 使用pip管理包
- 13. 接下来？
- 14. 交互式编辑和编辑历史
  - 14.1. Tab 补全和编辑历史
  - 14.2. 默认交互式解释器的替代品
- 15. 浮点算术：争议和限制
  - 15.1. 表示性错误
- 16. 附录
  - 16.1. 交互模式
    - 16.1.1. 错误处理
    - 16.1.2. 可执行的Python脚本
    - 16.1.3. 交互式启动文件
    - 16.1.4. 定制模块