含有章节索引的中文 文章模板

-- ZoomQuiet [2005-02-04 03:28:24]

Python常遇問題集全文

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

Contents

  1. 一般資訊及如何取得
    1. Python 是什麼?
    2. 為什麼取名叫 Python?
    3. 怎樣取得 Python 的源程式碼?
    4. 怎樣取得有關 Python 的說明文件
    5. 有沒有其他網站可以下載 Python 各發佈版
    6. 有沒有專門開給 Python 的新聞組和電郵列表
    7. 有沒有專門的網站是關於 Python 的
    8. 在網上是不是可以找到 Python 的說明文件.
    9. 有沒有關於 Python 的書.
    10. 有什麼可供引用的 Python 文章.
    11. 有沒有比較短的介紹 Python 的資料或是演講.
    12. Python 的版本編號是用哪種方法來取名.
    13. 我如何取得測試版的 Python.
    14. 使用 Python 都有哪些版權上的限制.
    15. 從一開始,為什麼要創造 Python 這個語言.
    16. 我是不是一定要喜歡 "Month Python's Flying Circus" 這套片子.
    17. Python 可以用在什麼地方.
    18. 我可以在這個版面中加入我自己的問題嗎
    19. 編輯 Python 程式有哪些文字編輯器比較好用.
    20. 我從來沒有學過寫程式,有沒有一些入門級的學習材料.
    21. www.python.org 的位置在哪裏.
    22. www.chinesepython.org 的位置在哪裏.
    23. Python 正確發音是什麼.
  2. Python 於真實世界的應用
    1. 有多少人在使用 Python
    2. 有沒有任何大型的軟件是用 Python 完成的?
    3. 是否有用 Python 的商業產品 ?
    4. Python 有多穩定 ?
    5. 在未來 Python 會有什麼新的發展 ?
    6. 是否可以提出對 Python 做不相容的改動 ?
    7. Python 的未來 ?
    8. 到底 PSA 是甚麼 ?
    9. 經已刪除
    10. 經已刪除
    11. Python 是否沒有公元二千的數位問題 ?
    12. Python 是不是利於編程入門者初學的語言?
  3. 編譯時的問題以及其他各項已知的錯誤
    1. 有沒有一套測試程式可以知道我的案裝是否完滿 ?
    2. 運行測試程式時, 它回報說遇到浮點運算的錯誤
    3. 執行好 configure 之後在 Link 步骤發生錯誤.
    4. Python 不接受傳給程式的參數
  4. Python 編程
  5. 擴充 Python
  6. Python 的設計理念
    1. 為什麼沒有 switch 或 case 之類的語句
    2. 為什麼 Python 要用縮排的方式來區分程式碼段
    3. 為何 Python 的字串被設成不可變量
    4. 已失效
  7. 在非 UNIX 平台上使用 Python
    1. Python 有沒有供 Mac 機用的版本
    2. 有沒有 DOS 和 Windows 的版本
    3. 有沒有 OS/2 的版本
    4. 有沒有 VMS 版
    5. IBM 大型機有沒有, 其他非 Unix 機又如何
    6. 供非 Unix 機用的程式源碼在哪裏有
  8. Python用在微軟視窗上
    1. 在 Windows 中使用 Python CGI

一般資訊及如何取得

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).

Python 於真實世界的應用

有多少人在使用 Python

數以千計的人在使用它, 現在可能已經有過萬甚至十萬用戶了. 幾乎每天都有新的用戶加入. 新聞組上的討論也很熱烈 (comp.lang.python), 但事實上並沒有一個確切的統計到底有多少人正在用.

Jacek Artymiak 寫了一個 Python 用戶的計數程式, 你可以到 http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py 看看 (瀏覽這個網頁不會另計數器產生變化, 你可以利用網頁上的連結把你自己也算進去). 大部分 Python 用戶好像都沒有登記.

有沒有任何大型的軟件是用 Python 完成的?

在 CWI (Python 的老家), 我們寫過一個 20,000 行長的軟件用來作為編寫超媒體展示用的書寫環境; 另外一個 5,000 行的多媒體遠程會工具, 和其他許多的小程式.

在 CNRI (Python 的新家), 我們寫了兩個大東西: Grail 是一個全功能的網頁瀏覽器 (http://grail.cnri.reston.va.us), 和 Knowbot 操作環境, 一個給流動程式的分散操作環境.

維珍尼亞大學用 Python 來操控虛擬實境的引擎.

Xeros PARC 的 ILU 計劃用 Python 來做 ILU 介面的膠合工具. 請到 ftp://ftp.parc.xerox.com/pub/ilu/ilu.html. ILU 是符合 CORBA 設計的一個免費 ORB, 它為很多很多的操作平台上的許許多多語言提供分散式的物象連結. (譯按: 天啊, 我到底在寫什麼?)

Mark Hammond, Greg Stein 和其他人把 Python 接進了微軟的 COM 和 ActiveX 架構之中. 意思就是 (別的先不說), Python 現在可以用來寫 ASP (Active Server Page), 或者用來控制 COM 對象. (例如自動從 Excel 或 Access 中抽取或是添入數據, 或是調用任何有 COM 功能的軟件來完成工作). Mark 聲稱甚至可以用 Python 來做 ActiveX 的 scripting host (誇張的說, 你完全可以把 JScript 鑲在一個 Python 應用程式中, 如果你覺得有需要的話.) Python/AX/COM 包含在 PythonWin 的發布套件當中.

加利褔利亞大學的 Irvine 所使用的學生管理系統整個都是由 Python 寫出來的, 它叫做 TELE-Vision. 有關資料可以聯絡 Ray Price [email protected].

澳大利亞的墨爾本木球埸 (Melbourne Criket Ground (MCG), 可容納 100,000+ 觀眾) 的計分牌系統是用 MS Windows 加大量的 Python 炮製出來的. 分牌上的每一個數字都是由 Python 所產生的. 利用 Python 加 C++ 而不是純粹的 C++ 提供了前所未見的簡單而強大的功能.

下一個問題的答案也可作為本題的參考.

注意: 這一段內容已經十分老了, 請到 http://www.python.org/psa/Users.html 閱讀更新的資料.

是否有用 Python 的商業產品 ?

有哇. 有很多都用的不亦樂乎呢. 看 http://www.python.org/psa/Users.html

Python 有多穩定 ?

非常非常穩定. 自 1991 年開始, 每 3 到 12 個月就有一個新並且穩定的版本推出來, 以目前來看, 這情況會一直持續下去.

我們也引進了所謂的 "除蟲版", 就是說每個推出的除蟲版本只會改正發現的錯誤而不會替版本添加新的, 不相容的功能甚式更改函數庫的功能. 這樣保證了版本間穩定和功能互相獨立. 除蟲版的號碼顯示在版本號的第三組編號上.

第 2.2 版的首次除蟲版於 2002 年 4 月 10 日推出, 現在的新版本編號是 2.2.1. 至於 2.1 版, 現在到了 2.1.3, 這個版本可以說是目前為止最穩定的因為它推出了兩次除蟲版.

在未來 Python 會有什麼新的發展 ?

請看 http://www.python.org/peps/ 上的 Python Enhancement Proposals (PEPs, Python 改良提案). PEPs 中多為對 Python 的建議修改. 它包含簡潔的技術說明的理據.

是否可以提出對 Python 做不相容的改動 ?

一般來說不要這樣做. 世界各地用 Python 寫成的程式已達數以百萬行, 因此如果新的修改, 哪怕多麼少, 假如會引致目前的程式無法正常運行的話會造成很大的困擾. 就算你能夠提供轉換程式, 但始終也要修正說明文件. 如果一定要加入這樣的功能, 我們只能以很慢的速度漸漸地升級.

關於如何提出不相容的修改建議, 請到 http://www.python.org/peps/pep-0005.html

Python 的未來 ?

請到 http://www.python.org/peps/ 閱讀有關未來的活動. 其中一章是關於提交 PEP 的規定和其格式 http://www.python.org/peps/pep-0001.html. 另外 http://www.python.org/peps/pep-0042.html 中有一張表羅列了開發人員們打算完成的計劃.

到底 PSA 是甚麼 ?

PSA 全名是 Python Software Activity 是由多名 Python 核心成員組成, 其成立目地是為了避免 Python 成為單獨個人的產品並由一個人全權負責. PSA 本身並不是一個獨立的組織, 它是屬於 CNRI 的.

後來 Python Software Foundation (PSF, Python 軟體基金) 成立並取締了 PSA. PSF 為一不牟利團體, 其網頁請到 http://www.python.org/psf/

http://www.python.org./psa/ 上還有部分 PSA 時期的文件.

經已刪除

經已刪除

Python 是否沒有公元二千的數位問題 ?

到 2001 年 1 月止, 並未收到式發現任何有關公元二千的重大問題, 相信 Python 語言並不存在這個問題.

然而由於 Python 是免費軟件, 我們不能絕對保證它的安全程度. 如果有潛在的問題發生了, Python 開發者並不會對此負責, 用戶並不能據此向開發人員索償.

Python 有一些處理日期和時間的函數, 這些統統都建基於 Unix 機上的時間表示方法 (就算在非 Unix 機種上也用這種方法), 時間是用自 1970 年起過了多少秒來算的, 這個計量方法在 2038 年以前都不會出現溢值錯誤.

Python 是不是利於編程入門者初學的語言?

(譯按: 絕對沒錯. 理由很多, 慢慢再告訴你.)

編譯時的問題以及其他各項已知的錯誤

有沒有一套測試程式可以知道我的案裝是否完滿 ?

有的. 你可以在編譯完成後鍵入 "make test" 來運行測試套件. 或者, 你可以在 Python 中輸入:

>>>import test.autotest

測試套件不會檢驗所有的功能, 但它會試運行許許多多的指令以確認 Python 是正常的.

運行測試程式時, 它回報說遇到浮點運算的錯誤

, 但我真的用 Python 寫程做浮點運算時並不曾發現錯誤, 為什麼?

這是因為寫這部分測試程式的人對 C 語言上的浮點運算的預期值做了一些不當的假設 (也許並不能說是不當, 只是在某些情況下這類假設並不保證絕對符合). 因此除非有人改正了這部分的測試程式, 否則你要自行把它注釋掉. 你也可能需要手動運行別的測試集.

普遍來說, 系統設定改變之後 (就是你的 configure script 變了) 再編譯時要先執行 "make clean" 指令.

Python 不接受傳給程式的參數

你大概是用了 GNU 的 getopt, 例如用 -liberty 來編譯, 別這樣做. 理由是 GNU 的 getopt 和 System V 的不同, 它遇到非參數項時不把它當作是參數列的終結. 最快的修正方法(相容的)是在程式前加上 '--' 號, 像這樣:

- #! /usr/local/bin/python --

如果是在互動態下:

- python -- script.py [options]

另外在 Python 的源碼中其實有一個修改過的 getopt 版本(位於 Python/getopt.c), 不過正常編譯態下不會使用它. (譯按: 應可在運行 configure 時加入相關選項.)

Python 編程

擴充 Python

Python 的設計理念

為什麼沒有 switch 或 case 之類的語句

類似的功能可以用連串的 if... elif... elif.. else 來成. 曾經有人提議過要不要加入這個語句, 但到目前為止尚未達成共識, 問題主要出現在要不要(以及假如要的話,怎樣做)有 range test 的功能。(譯按: 就是像 case 5-34: 或 case Monday - Sunday: 或 case in listx 等.)

為什麼 Python 要用縮排的方式來區分程式碼段

作者相信 Python 程式之所以如此簡明易讀很大程度是因為用了這種格式來編程. 很多人經過一段時間後開始喜愛這種優雅的書寫方式. 有個看法指出因為沒有了開始和結尾的標記號,所以用機器和肉眼分析的程式段會是一致的. 參考以下的例子:

if (x <= y)
x++;
y--;
z++;

作者曾瞪了這段程式碼很長的時間但始終轉不過彎來為什麼就算 x > y 但 y 的值還是被減了 1. 自然作者當時已不是 c 的新手了。

另一方面因為沒有了分段的標號, Python 的編寫格式基本上很統一, 不像 c 那樣, 大家對於應該作樣放置那兩個花括號而爭論不休. 就算你已經習慣了某種放法, 但當你看其他寫的和你不一樣的程式時總會覺得有點怪。而且通常慣用的放法是兩個花括號都獨自各佔一行, 如此一來程式會變得很長且浪費了許多寶貴的屏幕空間. 理想的話, 一個函數最好別起過一個終端機的螢幕高度 (比如說是 20 行), 這樣我們才能夠一眼看出個大概。 以 20 行來說, Python 可以完成的工作可比 c 要多好多好多了. 當然, 這不完全是因為 Python 用縮排格式所致 (Python 也需要變量宣告, 而且 Python 有很強的高階運算能力), 但這起碼會有幫助.

為何 Python 的字串被設成不可變量

這樣做有兩個好處. 其一是執行效率: 如果一開始就知道字串是不變的, 在創建時可以更方便一些 -- 因為字串的大小已知且不會改變 (這個原因同樣可以用在 list 和 tuple 的分別上). 另一個原因在於 Python 認為字串是很基本的東西, 和常數是一樣的. 正如你不可能把數字 '8' 改成別的含意, 你也不可能把 "eight" 改成別的意思. (這是根據 Jim Roskind 的說法.)

已失效

在非 UNIX 平台上使用 Python

Python 有沒有供 Mac 機用的版本

有哇. 由 Jack Jansen 所維護. 請上他的網站:

- http://www.cwi.nl/~jack/macpython.html

有沒有 DOS 和 Windows 的版本

有. 基本的版本可以在 http://www.python.org/windows/ 上拿到. 在該頁面上還有各類的擴展模組選擇, 包括許多不一定完全兼容的圖形編程介面. 基本發佈版中只包括標準的 Tkinter 模組.

大部分的擴充模組可以在 http://www.python.org/windows/ 上取得從那裏的超連結裏得到.

至於 Windows 3.1/DOS 的支授最近已停止了, 使用這些平台的用戶只能將就用較舊的 Python 版本. 其中一個是 WPY

WPY: 把 Python 移植到 DOS, Windows 3.1(1), Windows 95, Windows NT 及 OS/2. 同時提供 GUI 工具兼容於 Windows 和 Unix (DOS 不能用), 地址是 ftp://ftp.python.org/pub/python/wpy/.

有沒有 OS/2 的版本

有的, 請看 http://www.python.org/download/download_os2.html.

有沒有 VMS 版

有. Jean-Francis Pi?onne 移植至 OpenVMS. 可在 http://vmspython.dyndns.org 上找到.

IBM 大型機有沒有, 其他非 Unix 機又如何

作者沒聽過有關消息, 不過記得有 OS/9 和 Vxwork 上的版本 (兩個都是嵌入式系統用的). 如果你想知道有關的發展, 可以試試到新聞組上問一下, 可能直接有答案. 譬如說最近就公布了 HP3000 上的 MPE/iX5.0 就擁有了它的 Python 版本. (http://www.allegro.com/software/).

供非 Unix 機用的程式源碼在哪裏有

所有的碼都包括在標準的源碼發布版中了. 有關特殊平台的程式碼放在和該平台同名的子目錄中.

Python用在微軟視窗上

在 Windows 中使用 Python CGI

** IIS 服務器/ Peer 服務器

在這兩種服務器上設置 python 的方式和設置其他即譯語言相同. 先執行 'regedt32' 然後修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap 成 '.py :REG_SZ: c:\<pythoh路徑>\python.exe -u %s %s'

如此一來 http://yourserver/scripts/yourscripts.py 就可以運行你的 CGI 程式了. 記得其中 'scripts' 目錄要設定成可執行態 (一般的定態已經是可執行的了). 至於 '-u' 的選項則是指明標準輸入為 'unbuffered and binary' 模式 -- 處理二進位數據時要用的.

另外要指出的是使用 '.py' 檔名來為 CGI 命名並不太好, 但這並不在本題所討論的範圍中. (譬如你可以用 '.py' 來特指模組, 而 '.cgi' 或 '.cgp' 來代表 CGI .

** Apache 設置

在 Apache 的設定文件 httpd.conf 的末端加入 'ScriptInterpreterSource Registry' 就可以了.

** Netscape Servers: 在關資料請到網上 http://home.netscape.com/comprod/server_central/support/fasttrack_man/programs.htm#1010870.

PythonFaq (last edited 2009-12-25 07:09:15 by localhost)