1. 淺嘗滋味
***********

如果你經常在電腦上工作，最終總能發現有些工作你會想要自動化。舉例來說，
你會想在很多文字檔案裡做相同的搜尋取代，或者是用個複雜的規則重新命名或
整理一群照片。也有可能你想寫個自己的小資料庫，一個專門的 GUI 應用程式
，或一個小遊戲。

如果你是一個職業軟體開發者，你可能要操作數個 C/C++/Java 程式庫，卻覺得
平常寫程式碼、編譯、測試、再編譯的流程太慢；有可能你正為了一個程式庫撰
寫一套測試集，但發現寫測試單調乏味；也有可能你正在開發一個能使用某一語
言擴充的程式，但並不想要為了這程式特別設計一個全新的擴充語言。

在上述的例子中，Python 正是你合適的語言。

也許你可以為了某些任務而寫個 Unix shell 腳本或者 Windows 批次檔來處理
，但 shell 腳本最適合於搬動檔案或更動文字內容，而不適於圖形應用程式或
遊戲。你可以為此寫個 C/C++/Java 程式，但僅僅是完成個草稿也需要很長的開
發時間。相較而言，Python 更易於使用，並能在 Windows、Mac OSX、Unix 作
業系統上執行，且能更快速地幫助你完成工作。

Python 即便易用也是個貨真價實的程式語言。它提供比 shell 腳本、批次檔更
多樣的程式架構與更多的支援。另一方面，Python 提供比 C 更豐富的錯語檢查
。相較於 C ，Python 作為一個「非常高階的程式語言」，它內建了高階的資料
型別如彈性的數列與字典。因為這些多用途的資料型別， Python 適用解決比
Awk （甚至是 Perl）能處理的更多問題上。至少在許多事情中，使用 Python
處理起來跟其他語言是同樣容易的。

Python 允許你把程式切割成許多模組 (module) 並將他們重覆運用至其他
Python 程式中。Python 自帶了一個很大集合的標準模組，它們能做為你程式的
基礎 — 或把它們當作一開始學寫 Python 程式的範例。有些模組提供了如檔案
I/O、系統呼叫、socket 的功能，甚至提供了 Tk 等圖形介面工具庫 (GUI
toolkit) 的介面。

Python 是個直譯式語言，因為不需要編譯與連結，能為你在開發過程中省下可
觀的時間。它的直譯器能互動地使用，因此能很方便地實驗每個語言的功能、寫
些用完即丟的程式、幫助測試一些從細部開始開發的函式。它也是個好用的計算
機。

Python 讓程式寫得精簡並易讀。用 Python 實作的程式長度往往遠比用 C、C++
、Java 實作的短。這有以下幾個原因：

* Python 高階的資料型別能在一陳述句 (statement) 中表達很複雜的操作；

* 陳述句的段落以縮排為區格而非括號；

* 不需要宣告變數和引數；

Python 是*可擴充的*：如果你會寫 C 程式，那麼要加個新的內建函式或模組到
直譯器中是很容易的。無論是為了用最快速的執行速度完成一些關鍵的操作，或
是讓 Python 連結到一些僅以二進元形式 (binary form) 釋出的程式庫（例如
特定供應商的繪圖程式庫）。如果你想更多這樣的結合，你其實也可以把
Python 直譯器連結到用 C 寫的應用程式，並在該應用程式中使用 Python 寫擴
充或者作為下達指令的語言。

順帶一提，這個語言是以 BBC 的戲劇《Monty Python’s Flying Circus》命名
，與爬蟲類完全沒有關係。在說明文件中引用他們的喜劇不但沒問題，這甚至是
個被鼓勵的行為！

如果你現在已經躍躍欲試，你會想了解 Python 更多細節，而學習語言的最好方
式就是直接使用它。接下來這個教學就將帶領你，一邊閱讀，一邊將所學用在
Python 直譯器中玩耍。

在下個章節中，將會解說如何使用該直譯器。這也許只是個普通的資訊，但你必
須試著操作接下來呈現的範例。

接下來的教學裡，將會透過許多範例介紹 Python 語言與其系統的諸多特色。一
開始是簡單的表示句 (expression)、陳述句 (statement) 和資料型別 (data
type)；接著是函式(function) 與模組 (module)；最後會接觸一些較進階的主
題如例外狀況 (exception) 與使用者自定義類別 (class)。
