小段落

- 1.1 然後呢

#
1. 開胃菜

如果你曾經寫過大型的shell script，你大概能了解那種感覺：你想要新增加一個功能，但是這個script已經實在有夠大夠慢夠複雜的了，或者說，你想要加入的新功能需要呼叫系統功能或是其他函數，但是這些功能/函數只有C才能呼叫。你要解決的問題好像並沒有嚴重到要重新用C來寫整個程式，或者有些問題因為要用到可變長度的字串或是特別的資料結構(像是用排序過的檔案名稱組成序列(list))，用C來寫實在比shell麻煩的太多，又或者是你根本不是對C很熟。

另外一個情境是這樣的：也許你要使用好幾個C的程式庫，但是標準開發C程式的過程(寫/編譯/測試/重新編譯)實在太花時間，你需要能快速的開發好軟體。又或者你已經些好一個應用程式，這個程式可以使用一個延伸的語言來控制。你不想創造一種語言，然後還得寫好這個語言的編譯器，還得把這個編譯器跟你的程式放在一起。

在這些情況之下，Python也許正是你所需要的語言。Python雖然簡單，卻是不折不扣的程式語言。對大型的程式來說，它比起shell能提供更多的結構性及支援。另外一方面，它也提供了比C語言更多的錯誤檢查。由於Python是一個非常高階的語言，所以它有許多內建的資料型態像是有彈性的陣列及字典(dictionary)等等，如果用C來做的話得花上你大半天的時間。正是因為Python有較為一般性的資料型態，Python可以應用的範圍比起awk甚或是Perl要廣的很多，最起碼，Python跟這些語言一樣容易開發。

Python的另外一個特點就是可以將程式切成小模組，然後這些模組還可以應用在其他的程式之中。Python本身也有一個相當大的標準模組庫可以讓你來使用，或者當作學習Python程式設計的範例。在Python中也有內建的模組可以提供許多功能，諸如：檔案I/O、系統呼叫、sockets，甚至是與Tk之類的GUI工具互動的介面。

Python是一個直譯式的語言，可以省掉你在開發程式時不少編譯及連結程式的時間。這個Python的直譯器甚至可以互動式的使用，讓你在寫一些小程式來試驗Python語言的特性，或是測試程式時可以寫節省不少時間。你還可以用Python直譯器來當作計算機呢。

Python讓你可以寫出非常精練及可讀性高的程式。用Python寫出的程式通常比用C或C++寫的程式要短得多，其理由如下：

- 因為其高階的資料型態，使得你可以用很簡單的敘述(statement)就能夠表達複雜的運作過程
- Python使用縮排來代替C/C++中常見的前後括號{}
- Python不需要變數或是參數的宣告

Python 是延伸性高的語言。如果你知道如何寫C語言的程式的話，你很容易就可以在Python的直譯器中加入新的內建函數(function)或是模組，這樣做的好處是你可以讓程式中關鍵的部分速度調到最快，或者是連結Python到binary的程式庫(例如是廠商做好的圖形程式庫)去。一但你真的需要，你也可以把Python直譯器加入到你用C寫的應用程式裡面去，然後Python就變成你的應用程式的延伸或是商業化的語言了。

另外一提的是，這個程式的命名由來是源自於BBC著名的節目``Monty Python's Flying Circus''，跟其他噁心的爬蟲類沒有任何關係。如果你的文件中要提到Monty Python的話，不但照准，而且還相當鼓勵。

#
1.1 然後呢

現在你應該對Python感到有一些興趣了吧，接下來你將看到比較多的的細節討論。學習語言的最好途徑是使用之，趕快動手吧。

在下一章我們將討論到如何使用Python的直譯器，雖然相當的普通，但是如果你要嘗試一下之後的範例的話，這是重要的基礎。

本教學文件的其餘部分將用許多的例子介紹Python語言的各種不同的特性，先從簡單的表示式(expressions)開始，將會談到敘述(statements)及資料型態，然後是函式(functions)及模組(module)，最後會談到較高深的觀念像是例外情形(exceptions)及使用者自訂的類別(user-defined classes)等等。

請看關於此文件… 裡面有關如何給我們建議的說明。