-- Zoom.Quiet [DateTime(2004-08-09T23:14:40Z)]

Python常遇問題集全文

最新更新日期 2002年11月11日(星期一) 22:48:25

TableOfContents

一般資訊及如何取得

Python 是什麼?

Python 是一種即譯式的, 互動的, 面向對象的編程語言. 它包含了模組式的操作, 異常處理, 動態資料形態, 十分高層次的動態資料結構, 以及類別的使用. Python 揉合了簡單的語法和強大的功能. 它擁有眾多的編程介面以操控系統平台以及各類函數庫. 利用 c 和 c++ 可以對它進行擴充. 個別的應用軟件如果需要有一個可程序化介面也可以利用它來做為擴展語言用. 最後, Python 的可移植度非常高: 它可以在許多的 Unix 類平台上運行, 在 Mac, MS-DOS, 視窗 Windows, Windows NT, OS/2, BeOS, 以至 RISCOS 上都有相關的 Python 版本.

想知道更多, 最好是從 Python 教學資源中的 "入門篇" 看起. (參考下幾條問題)

請一併參看第 1.17 條問題. (Python 可以用在什麼地方)

為什麼取名叫 Python?

Python 的意思是蟒蛇, 但和這套語言的命名沒有關係. Python 的作者除了是一位電腦計算學家外, 也是 BBC 喜劇片 "Monty Python's Flying Circus" (七十年代一套受歡迎的片集)的影迷. 作者在替他的新語言改名時要找一個短的,獨一無二的並且帶些神秘感的名字, 於是他決定了把這個語言命名為 Python.

Python 沒有自己的商標, 你可以隨便用蟒蛇, 或是別的什麼蛇屬, 無論你喜歡它是兩尺長還是 16 吨重, 甚至你用一隻小老鼠都沒有所謂. (譯注: 市面上有幾本關於 Python 的專書都用了上面所說的動物, 因此作者在這裏澄清.)

怎樣取得 Python 的源程式碼?

最新的 Python 源程式碼一定可以在 python.org 上取得. 可到 http://www.python.org.download 下載. 至於最近開發中的版本則可以經 SourceForge 透過 CVS 以 anonymous 形式取得, 網址是 http://www.sf.net/projects/python

取得的源碼為 gzip 了的 tar 檔案. 當中有全部的 C 程式碼, LaTeX 格式的說明文件, Python 的函式庫模組, 範例和一些有用的自由軟件. 在大部份 Unix 類平台上能直接編譯安裝. (在非 Unix 平台上的使用方法, 請看第 7 節中的問題.

怎樣取得有關 Python 的說明文件

所有的說明文件可以到網上拿取, 有關資料可先從 http://www.python.org/doc/ 找起.

說明文件的 LaTeX 文檔已包括在源碼包中. 如果你沒有 LaTeX 可用, 在上面的網址裏可找到已做好的各種格式的現成文件 (如 html 或 postscript).

有關 Python 的中文文件不是很多, 已翻譯的有 "教學文件 (Tutorial)", "語言參考手冊" (Language Reference), "深入 Python" (Dive into Python). 這些可在 http://www.chinesepython.org/cgi_bin/moingb.cgi/ 上取得. 你也可以購買市面上關於 Python 的中文書.

有沒有其他網站可以下載 Python 各發佈版

以下 ftp 站點可以下載 Python:

美國:

ftp://ftp.python.org/pub/python/

ftp://gatekeeper.dec.com/pub/plan/python/

ftp://ftp.uu.net/languages/python/

ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/

ftp://ftp.sterling.com/programming/languages/python/

ftp://uiarchive.cso.uiuc.edu/pub/lang/python/

ftp://ftp.pht.com/mirrors/python/python/

ftp://ftp.cdrom.com/pub/python/

歐洲:

ftp://ftp.cwi.nl/pub/python/

ftp://ftp.funet.fi/pub/languages/python/

ftp://ftp.sunet.se/pub/lang/python/

ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/

ftp://ftp.lip6.fr/pub/python/

ftp://sunsite.cnlab-switch.ch/mirror/python/

ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/

澳大利亞:

ftp://ftp.dstc.edu.au/pub/python/

有沒有專門開給 Python 的新聞組和電郵列表

有一個新聞組, comp.lang.python, 和一個電郵列表. 它們之間是聯通的 -- 如果你能讀得到新聞組則你不需要申請加入電郵表. 要加入電郵表([email protected]) 請到以下 Mailman 的網站: http://www.python.org/mailman/listinfo/python-list (Mailman 也是用 Python 寫成的).

除此之外還有許多其也的 Python 電郵列表, 請到 http://www.python.org/psa/MailingLists.html 參觀.

Deja News 保留了有關新聞組的貼文內容, 你可以到 "Python 新聞組搜尋"站, http://www.python.org/search/search_news.html. 該網頁上還可連結到別的文件庫去.

有沒有專門的網站是關於 Python 的

有的, http://www.python.org/ 是 Python 的官方網站.

在網上是不是可以找到 Python 的說明文件.

是. 在 http://www.python.org/doc/ 中可以找到所有的官方說明文件. 大部分可供即時瀏覽和下載.

有沒有關於 Python 的書.

有許多, 更多的正在印制中. 請留意 python.org 的 Wiki -- http://www.python.org/cgi-bin/moinmoin/PythonBooks 上的書單.

至於中文書則市面上才剛剛出現了幾本. (譯注: 請有心人加上資料.)

有什麼可供引用的 Python 文章.

如果你不想用 Python 的網站, 也不打算用書 (看前面的問題), 在 Python 的網站上有些相關的文章你可以參考: http://www.python.org/doc/Publications.html

有沒有比較短的介紹 Python 的資料或是演講.

也有一些 -- 請到主站點找有關的連結 http://www.python.org/doc/Hints.html#intros.

Python 的版本編號是用哪種方法來取名.

Python 的版本號形式是 A.B.C 或是 A.B. 其中 A 是主版本編號 -- 只有當語言本身有很大的轉變時才會調大. B 是版本副號, 當程式改變較少時用以區別新舊版本. C 則是小號, 當發行除蟲版本時便用. 有關除蟲版本的資料請參閱 PEP 6.

Alpha (測試), Beta (調試), release (發布) 建議推出的版本都有其另外的編號後綴. 測試版用 aN, 調試版用 bN, 發布版用 cN, 其中 N 代表一個不太大的數.

按一般的規定, 除非在建議發布版有極大的缺陷, 否則建議發布和正式發布版間不應有任何改動.

有時你會遇到加有 '+' 後綴的版本編號, 例如 "2.2+". 這些版本不曾正式發布過, 它們是從 CVS 軟庫中直接編譯而來的.

你也可以參看 sys.version, sys.hexversion 和 sys.version_info 的說明, 裏面有些額外的資料.

我如何取得測試版的 Python.

所有發布的版本, 包括建議為測試, 調試和發布的各版本推出的消息都會在 comp.lang.python 和 comp.lang.python.announce 這兩個新聞組上公告. 這兩個新聞組分別和 [email protected], [email protected] 聯通. 除此之外, 在 Python 的官方網站 http://www.python.org 上也會公告有關消息.

至於 Python 開發中的最新版本可以透過 CVS 取得. 請上 http://sourceforge.net/cvs/?group_id=5470 .如你不熟悉 CVS 的操作方法, 可以閱讀有關的文章, 如 http://linux.oreillynet.com/pub/a/linux/2002/01/03/cvs_intro.html 就有介紹.

使用 Python 都有哪些版權上的限制.

很難說有何限制. 拿到源碼後隨便你幹些啥, 唯一的條件是你保留原來的版權聲明, 並在你寫的有關文件中展示那些聲明. 同時, 未得到作者所屬的機構的書面同意, 不要在宣傳時引用它的名字, 也不要代他們作出任何形式的承諾 (具體的法律字眼請參閱版權聲明的原文).

有一點要說清楚的是, 如果你尊守上述的要求, 那就算你利用 Python 作商業用途, 包括售賣它的源碼或是執行檔, 或者是改進了的 Python 以及在產品中加入 Python (部分或是全部). 另外, 如果你的把它用作商業盈利, 請通知作者因為他也很有興趣知道.

從一開始,為什麼要創造 Python 這個語言.

以下的作者的回憶:

我在 CWI 的 ABC (譯按: 另一種即譯式語言) 開發組工作時, 學到很多設計程式語言方面的事並且得到許多經驗. Python 多方面繼承了這一套語言的特性, 如縮排式的分段方法和高層次的數據類等.(當然,在語言的實現細節上兩者很不一樣.)

我對於 ABC 的某些地方很不以為然, 當然, 它有很多地方是讓人喜愛的. 對這些我不喜歡的地方我發現並不能透過擴充 ABC 來滿足我的要求 -- 事實上, 難以擴充正正是 ABC 的最大弱點. 與此同時, 我擁有使用 Modula-2+ 的一些經驗並且和一些 Modula-3 的設計者們溝通過 (也讀了 M3 的報告書). M3 中的異常處理和某些別的句法是 Python 中有關功能的出處.

當時我在 CWI 的 Amoeba 分散操作系統小組工作. 我們需要一個更好的辦法來做系統管理工作, 我們並不想用 C 寫程式或是用 Bourne shell 寫腳本, 因為 Amoeba 有它自己一套調用系統的介面不是用 Bourne shell 可以輕易存取的. 而我在 Amoeba 的異常處理方面的經驗便我很清楚的意識到在程式語言中包含錯誤處理功能的重要程度.

於是我的腦海出現了一套和 ABC 句法類似同時可以呼叫 Amoeba 系統功能的即譯語言, 它應該能滿足我的要求. 我知道如果我把它設計成只能是 Amoeba 專用的語言並不是聰明的做法, 我需要的是一套更普遍, 並能多方面擴充的語言.

我有大量時間可以幹自己想做的活, 於是我決定開始實現我的構想. 在接下來的一年中, 雖然我依然在用工餘時間來做開發, Python 已經頗為成功的應用到 Amoeba 計劃中了. 同事們給了許多意見, 這些都轉變成早期對 Python 的改良和完善工作.

到了 1991 年的 2 月, 就在經過短短一年的開發工作, 我決定把 Python 張貼到 USENET 上去讓更多人使用. 後來發生的事情很多人都知道, 都寫在 Misc/HISTORY 這個文件中了.

我是不是一定要喜歡 "Month Python's Flying Circus" 這套片子.

不.

Python 可以用在什麼地方.

Python 可以用在很多埸合. 當你需要大量的動態調整, 要容易使用, 功能強大並且富彈性的情況, Python 可以發揮很好的功效.

在處理文字方面, Python 的核心功能 (不需任何擴充庫的情況下) 較起別的編程語言更為易用而速度相當. 這使 Python 在需要處理字符串的工作 (包括系統管理, CGI 編程) 上成為高效的語言.

當 Python 加上它的標準擴充庫 (如 PIL, COM, Numeric, oracledb, kjbuckets, tkinter, win32api, 等) 或是特別擴充庫 (你自己寫的, 或是用 SWIG 做的, 或是利用 ILU/COBRA/COM 的)後, 它可以變成一個很好的 "膠合語言" 或者叫 "指導語言". 就是指把異質的編程環境和互不相關的軟件功能整合處理的工具. 例如把 Numeric 和 oracledb 透過 Python 結合起來你就可以替你的資料庫數據做統計分析, 甚至是做譜分析. Python 的簡單, 易用以及方便而強大的 C 擴展介面使它成為一種十分優秀的 "膠合語言".

許多開發人員也在寫圖像用戶介面時廣泛地採用了 Python.

我可以在這個版面中加入我自己的問題嗎

(譯按: 當然可以. 凡是有關 Python 的般性問題都可自由地放上來. 但請注意特殊問題或技巧或是和官方問題集差別太大的問題請貼到本站其他的問題集中.)

編輯 Python 程式有哪些文字編輯器比較好用.

在 Unix 上, 首選 Emacs/XEmacs. 它有個專為編寫 Python 程式用的模式, 其設定檔可以在 Python 的源程式碼中找到 (Misc/python-mode.el). 在 XEmacs 的安裝時已包括了這個設定 (至於 FSF Emacs 方面我們正在和他們商量有關的法律細節以便這個設定也可以包括在軟件發布版中.) 這個設定的詳情請

http://www.python.org/emacs/python-mode/index.html

其他的選擇也不少, 無論是 Unix, Windows, Micintosh 都有. Richard Jones 根據新聞組的內容綜合了一張表,

http://www.bofh.asn.au/~richard/editors.html

我從來沒有學過寫程式,有沒有一些入門級的學習材料.

有幾篇文章, 另外起碼一本書. 所有適合 Python 初學者看的資料都綜合成一個網頁,

http://www.python.org/doc/Newbies.html

至於中文的資料, 本站也有一些, 請到 'Python 入門' 頁面.

www.python.org 的位置在哪裏.

現時位於阿姆斯特丹, 服務由 XS4ALL 所提供.

www.chinesepython.org 的位置在哪裏.

現時位於香港, 由 NetZide 所提供.

Python 正確發音是什麼.

我聽過有兩種讀法, 皆為雙音節,

首音為 "pi" (圓周率), 尾音為 "夫 on" (on 為英文的 on/off 的 on),

首音為 "pi" (圓周率), 尾音為 "夫 en" (en 為韻母 an/en/in 的 en, 或英文 one/two/three 的 one).