Python 教學
***********

Python 是一種易學、功能強大的程式語言。它有高效能的高階資料結構，也有
簡單但有效的方法去實現物件導向程式設計。Python 優雅的語法和動態型別，
結合其直譯特性，使它成為眾多領域和大多數平臺上，撰寫腳本和快速開發應用
程式的理想語言。

使用者可以自由且免費地從 Python 官網上 (https://www.python.org/) 取得
各大平台上用的 Python 直譯器和標準函式庫，下載其源碼或二進位形式執行檔
，同時，也可以將其自由地散佈。另外，Python 官網也提供了許多自由且免費
的第三方 Python 模組、程式與工具、以及額外說明文件，有興趣的使用者，可
在官網上找到相關的發行版本與連結網址。

使用 C 或 C++（或其他可被 C 呼叫的程式語言），可以很容易在 Python 直譯
器內新增功能函式及資料型別。同時，對可讓使用者自製功能的應用程式來說，
Python 也適合作為其擴充用界面語言 (extension language)。

這份教學將簡介 Python 語言與系統的基本概念及功能。除了閱讀之外、實際用
Python 直譯器寫程式跑範例，將有助於學習。但如果只用讀的，也是可行的學
習方式，因為所有範例的內容皆獨立且完整。

若想了解 Python 標準物件和模組的描述，請參閱 Python 標準函式庫
(Standard Library)。在 Python 语言参考 中，您可以學到 Python 語言更正
規的定義。想用 C 或 C++ 寫延伸套件 (extensions) 的讀者，請閱讀 扩展和
嵌入 Python 解释器 和 Python / C API 參考手冊 。此外，市面上也能找到更
深入的 Python 學習書。

這份教學中，我們不會介紹每一個功能，甚至，也不打算介紹完每一個常用功能
。取而代之，我們的重心將放在介紹 Python 中最值得一提的那些功能，幫助您
了解 Python 語言的特色與風格。讀完教學後，您將有能力閱讀和撰寫 Python
模組與程式，也做好進一步學習 Python 標準函式庫 (Standard Library) 中各
類型的 Python 函式庫模組的準備。

术语对照表 頁面也值得細讀。

* 1. 淺嘗滋味

* 2. 使用 Python 直譯器

  * 2.1. 啟動直譯器

    * 2.1.1. 傳遞引數

    * 2.1.2. 互動模式

  * 2.2. 直譯器與它的環境

    * 2.2.1. 原始碼的字元編碼 (encoding)

* 3. 一個非正式的 Python 簡介

  * 3.1. 把 Python 當作計算機使用

    * 3.1.1. 數字 (Number)

    * 3.1.2. 字串 (String)

    * 3.1.3. List（串列）

  * 3.2. 初探程式設計的前幾步

* 4. 深入了解流程控制

  * 4.1. "if" 语句

  * 4.2. "for" 语句

  * 4.3. "range()" 函式

  * 4.4. "break" 和 "continue" 语句，以及循环中的 "else" 子句

  * 4.5. "pass" 语句

  * 4.6. 定義函式 (function)

  * 4.7. 函数定义的更多形式

    * 4.7.1. 参数默认值

    * 4.7.2. 关键字参数

    * 4.7.3. 特殊参数

      * 4.7.3.1. 位置或关键字参数

      * 4.7.3.2. 仅限位置参数

      * 4.7.3.3. 仅限关键字参数

      * 4.7.3.4. 函数示例

      * 4.7.3.5. 概括

    * 4.7.4. 任意的参数列表

    * 4.7.5. 解包参数列表

    * 4.7.6. Lambda 表达式

    * 4.7.7. 說明文件字串

    * 4.7.8. 函数标注

  * 4.8. 小插曲：编码风格

* 5. 資料結構

  * 5.1. 進一步了解 List（串列）

    * 5.1.1. 將 List 作為 Stack（堆疊）使用

    * 5.1.2. 將 List 作為 Queue（佇列）使用

    * 5.1.3. List Comprehensions（串列綜合運算）

    * 5.1.4. 巢狀的 List Comprehensions

  * 5.2. "del" 语句

  * 5.3. Tuples 和序列 (Sequences)

  * 5.4. 集合 (Sets)

  * 5.5. 字典（Dictionary）

  * 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. 格式化的字串文本 (Formatted String Literals)

    * 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. 预定义的清理操作

* 9. 类

  * 9.1. 名称和对象

  * 9.2. Python 作用域和命名空间

    * 9.2.1. 作用域和命名空间示例

  * 9.3. 初探类

    * 9.3.1. 类定义语法

    * 9.3.2. 类对象

    * 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. Python 標準函式庫概覽

  * 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. 定制模块
