新聞中心
python常見(jiàn)問(wèn)題
一般信息
什么是 Python?
Python 是一種解釋型、交互式、面向?qū)ο蟮木幊陶Z(yǔ)言。 它包含了模塊、異常、動(dòng)態(tài)類(lèi)型、高層級(jí)動(dòng)態(tài)數(shù)據(jù)類(lèi)型以及類(lèi)等特性。 在面向?qū)ο缶幊桃酝馑€支持多種編程范式,例如過(guò)程式和函數(shù)式編程等。 Python 結(jié)合了超強(qiáng)的功能和極清晰的語(yǔ)法。 它帶有許多系統(tǒng)調(diào)用和庫(kù)以及多種窗口系統(tǒng)的接口,并且能用 C 或 C++ 來(lái)進(jìn)行擴(kuò)展。 它還可用作需要可編程接口的應(yīng)用程序的擴(kuò)展語(yǔ)言。 最后,Python 非常易于移植:它可以在包括 Linux 和 macOS 在內(nèi)的許多 Unix 變種以及 Windows 上運(yùn)行。

要了解更多詳情,請(qǐng)先查看 Python 教程。 Python 新手指南 提供了學(xué)習(xí) Python 的其他入門(mén)教程及資源的鏈接。
什么是 Python 軟件基金會(huì)?
Python 軟件基金會(huì)(Python Software Foundation,簡(jiǎn)稱(chēng) PSF)是一個(gè)獨(dú)立的非盈利組織,它擁有 Python 2.1 及以上各版本的版權(quán)。 PSF 的使命是推進(jìn)與 Python 編程語(yǔ)言相關(guān)的開(kāi)源技術(shù),并推廣 Python 的使用。 PSF 的主頁(yè)是 https://www.python.org/psf/。
向 PSF 提供捐助在美國(guó)是免稅的。 如果你在使用 Python 并且感覺(jué)它對(duì)你很有幫助,可以通過(guò) PSF 捐助頁(yè) 進(jìn)行捐助。
使用 Python 是否存在版權(quán)限制?
你可以任意使用源碼,只要你保留版權(quán)信息并在你基于 Python 的產(chǎn)品文檔中顯示該版權(quán)信息。 如果你遵守此版權(quán)規(guī)則,就可以將 Python 用于商業(yè)領(lǐng)域,以源碼或二進(jìn)制碼的形式(不論是否經(jīng)過(guò)修改)銷(xiāo)售 Python 的副本,或是以某種形式包含了 Python 的產(chǎn)品。 當(dāng)然,我們?nèi)匀幌M@知所有對(duì) Python 的商業(yè)使用。
請(qǐng)參閱 PSF 許可頁(yè) 以查看進(jìn)一步的說(shuō)明以及許可的完整文本內(nèi)容的鏈接。
Python 的徽標(biāo)是注冊(cè)商標(biāo),在某些情況下需要獲得允許方可使用。 請(qǐng)參閱 商標(biāo)使用政策 了解詳情。
創(chuàng)造 Python 的最初理由是什么?
以下是有關(guān)最初緣起的一份 非常 簡(jiǎn)短的摘要,由 Guido van Rossum 本人撰寫(xiě):
我在 CWI 的 ABC 部門(mén)時(shí)在實(shí)現(xiàn)解釋型語(yǔ)言方面積累了豐富經(jīng)驗(yàn),通過(guò)與這個(gè)部門(mén)成員的協(xié)同工作,我學(xué)到了大量有關(guān)語(yǔ)言設(shè)計(jì)的知識(shí)。 這是許多 Python 特性的最初來(lái)源,包括使用縮進(jìn)來(lái)組織語(yǔ)句以及包含非常高層級(jí)的數(shù)據(jù)結(jié)構(gòu)(雖然在 Python 中具體的實(shí)現(xiàn)細(xì)節(jié)完全不同)。
我對(duì) ABC 語(yǔ)言有過(guò)許多抱怨,但同時(shí)也很喜歡它的許多特性。 沒(méi)有可能通過(guò)擴(kuò)展 ABC 語(yǔ)言(或它的實(shí)現(xiàn))來(lái)彌補(bǔ)我的不滿 —— 實(shí)際上缺乏可擴(kuò)展性就是它最大的問(wèn)題之一。 我也有一些使用 Modula-2+ 的經(jīng)驗(yàn),并曾與 Modula-3 的設(shè)計(jì)者進(jìn)行交流,還閱讀了 Modula-3 的報(bào)告。 Modula-3 是 Python 中異常機(jī)制所用語(yǔ)法和語(yǔ)義,以及其他一些語(yǔ)言特性的最初來(lái)源。
我還曾在 CWI 的 Amoeba 分布式操作系統(tǒng)部門(mén)工作。 當(dāng)時(shí)我們需要有一種比編寫(xiě) C 程序或 Bash 腳本更好的方式來(lái)進(jìn)行系統(tǒng)管理,因?yàn)?Amoeba 有它自己的系統(tǒng)調(diào)用接口,并且無(wú)法方便地通過(guò) Bash 來(lái)訪問(wèn)。 我在 Amoeba 中處理錯(cuò)誤的經(jīng)驗(yàn)令我深刻地意識(shí)到異常處理在編程語(yǔ)言特性當(dāng)中的重要地位。
我發(fā)現(xiàn),某種具有 ABC 式的語(yǔ)法而又能訪問(wèn) Amoeba 系統(tǒng)調(diào)用的腳本語(yǔ)言將可滿足需求。 我意識(shí)到編寫(xiě)一種 Amoeba 專(zhuān)屬的語(yǔ)言是愚蠢的,所以我決定編寫(xiě)一種具有全面可擴(kuò)展性的語(yǔ)言。
在 1989 年的圣誕假期中,我手頭的時(shí)間非常充裕,因此我決定開(kāi)始嘗試一下。 在接下來(lái)的一年里,雖然我仍然主要用我的業(yè)余時(shí)間來(lái)做這件事,但 Python 在 Amoeba 項(xiàng)目中的使用獲得了很大的成功,來(lái)自同事的反饋?zhàn)屛业靡栽黾恿嗽S多早期的改進(jìn)。
到 1991 年 2 月,經(jīng)過(guò)一年多的開(kāi)發(fā),我決定將其發(fā)布到 USENET。 之后的事情就都可以在
Misc/HISTORY文件里面看了。
Python 適合做什么?
Python 是一種高層級(jí)的多用途編程語(yǔ)言,可用于解決許多不同門(mén)類(lèi)的問(wèn)題。
The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for Python 標(biāo)準(zhǔn)庫(kù) to get an idea of what’s available. A wide variety of third-party extensions are also available. Consult the Python Package Index to find packages of interest to you.
Python 版本的編號(hào)形式是怎樣的?
Python versions are numbered “A.B.C” or “A.B”:
A is the major version number — it is only incremented for really major changes in the language.
B is the minor version number — it is incremented for less earth-shattering changes.
C is the micro version number — it is incremented for each bugfix release.
See PEP 6 for more information about bugfix releases.
發(fā)布版本并非都是問(wèn)題修正版本。 在新的主要發(fā)布版本開(kāi)發(fā)過(guò)程中,還會(huì)發(fā)布一系列的開(kāi)發(fā)版,它們以 alpha (a), beta (b) 或 release candidate (rc) 來(lái)標(biāo)示。 其中 alpha 版是早期發(fā)布的測(cè)試版,它的接口并未最終確定;在兩個(gè) alpha 發(fā)布版本間出現(xiàn)接口的改變并不意外。 而 beta 版更為穩(wěn)定,它會(huì)保留現(xiàn)有的接口,但也可能增加新的模塊,release candidate 版則會(huì)保持凍結(jié)狀態(tài)不會(huì)再進(jìn)行改變,除非有重大問(wèn)題需要修正。
Alpha, beta and release candidate versions have an additional suffix:
The suffix for an alpha version is “aN” for some small number N.
The suffix for a beta version is “bN” for some small number N.
The suffix for a release candidate version is “rcN” for some small number N.
In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0rcN, and those precede 2.0.
你還可能看到帶有“+”后綴的版本號(hào),例如“2.2+”。 這表示未發(fā)布版本,直接基于 CPython 開(kāi)發(fā)代碼倉(cāng)庫(kù)構(gòu)建。 在實(shí)際操作中,當(dāng)一個(gè)小版本最終發(fā)布后,未發(fā)布版本號(hào)會(huì)遞增到下一個(gè)小版本號(hào),成為“a0”版本,例如“2.4a0”。
另請(qǐng)參閱 sys.version, sys.hexversion 以及 sys.version_info 的文檔。
我應(yīng)如何獲取一份 Python 源代碼的副本?
最新的 Python 發(fā)布版源代碼總能從 python.org 獲取,下載頁(yè)鏈接為 https://www.python.org/downloads/。 最新的開(kāi)發(fā)版源代碼可以在 https://github.com/python/cpython/ 獲取。
發(fā)布版源代碼是一個(gè)以 gzip 壓縮的 tar 文件,其中包含完整的 C 源代碼、Sphinx 格式的文檔、Python 庫(kù)模塊、示例程序以及一些有用的自由分發(fā)軟件。 該源代碼將可在大多數(shù) UNIX 類(lèi)平臺(tái)上直接編譯并運(yùn)行。
請(qǐng)參閱 Python 開(kāi)發(fā)者指南的初步上手部分 了解有關(guān)獲取源代碼并進(jìn)行編譯的更多信息。
我應(yīng)如何獲取 Python 的文檔?
當(dāng)前的 Python 穩(wěn)定版本的標(biāo)準(zhǔn)文檔可在 https://docs.python.org/3/ 查看。 也可在 https://docs.python.org/3/download.html 獲取PDF、純文本以及可下載的 HTML 版本。
The documentation is written in reStructuredText and processed by the Sphinx documentation tool. The reStructuredText source for the documentation is part of the Python source distribution.
我之前從未接觸過(guò)編程。 哪里有 Python 的教程?
有許多可選擇的教程和書(shū)籍。 標(biāo)準(zhǔn)文檔中也包含有 Python 教程。
請(qǐng)參閱 新手指南 以獲取針對(duì) Python 編程初學(xué)者的信息,包括教程的清單。
是否有專(zhuān)門(mén)針對(duì) Python 的新聞組或郵件列表?
有一個(gè)新聞組 comp.lang.python 和一個(gè)郵件列表 python-list。 新聞組和郵件列表是彼此互通的 —— 如果你可以閱讀新聞就不必再訂閱郵件列表。 comp.lang.python 的流量很大,每天會(huì)收到數(shù)以百計(jì)的發(fā)帖,Usenet 使用者通常更擅長(zhǎng)處理這樣大的流量。
有關(guān)新軟件發(fā)布和活動(dòng)的公告可以在 comp.lang.python.announce 中找到,這是個(gè)嚴(yán)格管理的低流量列表,每天會(huì)收到五個(gè)左右的發(fā)帖。 可以在 Python 公告郵件列表 頁(yè)面進(jìn)行訂閱。
有關(guān)其他郵件列表和新聞組的更多信息可以在 https://www.python.org/community/lists/ 找到。
我應(yīng)如何獲取 Python 的公開(kāi)測(cè)試版本?
可以從 https://www.python.org/downloads/ 下載 alpha 和 beta 發(fā)布版。 所有發(fā)布版都會(huì)在 comp.lang.python 和 comp.lang.python.announce 新聞組以及 Python 主頁(yè) https://www.python.org/ 上進(jìn)行公告;并會(huì)推送到 RSS 新聞源。
你還可以通過(guò) Git 訪問(wèn) Python 的開(kāi)發(fā)版。 請(qǐng)參閱 Python 開(kāi)發(fā)者指南 了解詳情。
我應(yīng)如何為 Python 提交錯(cuò)誤報(bào)告和補(bǔ)???
To report a bug or submit a patch, use the issue tracker at https://github.com/python/cpython/issues.
有關(guān) Python 開(kāi)發(fā)流程的更多信息,請(qǐng)參閱 Python 開(kāi)發(fā)者指南。
是否有任何公開(kāi)發(fā)表的 Python 相關(guān)文章可以供我參考引用?
可能作為參考文獻(xiàn)的最好方式還是引用你喜歡的 Python 相關(guān)書(shū)籍。
第一篇有關(guān) Python 的文章寫(xiě)于 1991 年,現(xiàn)在其內(nèi)容已經(jīng)相當(dāng)過(guò)時(shí)了。
Guido van Rossum 與 Jelke de Boer, “使用 Python 編程語(yǔ)言交互式地測(cè)試遠(yuǎn)程服務(wù)器”, CWI 季刊, 第 4 卷, 第 4 期 (1991 年 12 月), 阿姆斯特丹, 第 283—303 頁(yè)。
是否有任何 Python 相關(guān)的書(shū)籍?
是的,相關(guān)的書(shū)籍很多,還有更多即將發(fā)行。 請(qǐng)?jiān)L問(wèn) python.org 的 wiki 頁(yè)面 https://wiki.python.org/moin/PythonBooks 獲取一份清單。
你也可以到各大在線書(shū)店搜索 “Python” 并過(guò)濾掉對(duì) Monty Python 的引用;或者也可以搜索 “Python” 加 “l(fā)anguage”。
www.python.org 具體位于世界上的哪個(gè)地點(diǎn)?
The Python project’s infrastructure is located all over the world and is managed by the Python Infrastructure Team. Details here.
為何命名為 Python?
在著手編寫(xiě) Python 實(shí)現(xiàn)的時(shí)候,Guido van Rossum 同時(shí)還閱讀了剛出版的 “Monty Python 的飛行馬戲團(tuán)” 劇本,這是一部自 1970 年代開(kāi)始播出的 BBC 系列喜劇。 Van Rossum 覺(jué)得他需要選擇一個(gè)簡(jiǎn)短、獨(dú)特而又略顯神秘的名字,于是他決定將這個(gè)新語(yǔ)言命名為 Python。
我必須喜歡 “Monty Python 的飛行馬戲團(tuán)” 嗎?
不必,但這對(duì)學(xué)習(xí)會(huì)有幫助。 ????
現(xiàn)實(shí)世界中的 Python
Python 有多穩(wěn)定?
非常穩(wěn)定。 自 1991 年起大約每隔 6 到 18 個(gè)月就會(huì)推出新的穩(wěn)定發(fā)布版,這種狀態(tài)看來(lái)還還持續(xù)。 從 3.9 版開(kāi)始,Python 將會(huì)每隔 12 個(gè)月推出一個(gè)新的主要發(fā)布版 (PEP 602)。
開(kāi)發(fā)者也會(huì)推出舊版本的“問(wèn)題修正”發(fā)布版,因此現(xiàn)有發(fā)布版的穩(wěn)定性還會(huì)逐步提升。 問(wèn)題修正發(fā)布版會(huì)以版本號(hào)第三部分的數(shù)字來(lái)標(biāo)示(例如 3.5.3, 3.6.2),用于穩(wěn)定性的管理;只有對(duì)已知問(wèn)題的修正會(huì)包含在問(wèn)題修正發(fā)布版中,同一系列的問(wèn)題修正發(fā)布版中的接口確定將會(huì)始終保持一致。
The latest stable releases can always be found on the Python download page. There are two production-ready versions of Python: 2.x and 3.x. The recommended version is 3.x, which is supported by most widely used libraries. Although 2.x is still widely used, it is not maintained anymore.
有多少人在使用 Python?
使用者應(yīng)該數(shù)以百萬(wàn)計(jì),但很難獲得一個(gè)精確的數(shù)字。
Python 可以免費(fèi)下載,因此并不存在銷(xiāo)量數(shù)據(jù),此外它也可以從許多不同網(wǎng)站獲取,并且包含于許多 Linux 發(fā)行版之中,因此下載量統(tǒng)計(jì)同樣無(wú)法完全說(shuō)明問(wèn)題。
comp.lang.python 新聞組非常活躍,但不是所有 Python 用戶都會(huì)在新聞組發(fā)帖,許多人甚至不會(huì)閱讀新聞組。
有哪些重要的項(xiàng)目是用 Python 開(kāi)發(fā)的?
請(qǐng)?jiān)L問(wèn) https://www.python.org/about/success 查看使用了 Python 的項(xiàng)目列表。 閱覽 歷次 Python 會(huì)議 的日程紀(jì)要可以看到許多不同公司和組織所做的貢獻(xiàn)。
High-profile Python projects include the Mailman mailing list manager and the Zope application server. Several Linux distributions, most notably Red Hat, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Lucasfilm Ltd.
在未來(lái)可以期待 Python 將有什么新進(jìn)展?
See https://peps.python.org/ for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. Look for a PEP titled “Python X.Y Release Schedule”, where X.Y is a version that hasn’t been publicly released yet.
新版本的開(kāi)發(fā)會(huì)在 python-dev 郵件列表 中進(jìn)行討論。
提議對(duì) Python 加入不兼容的更改是否合理?
通常來(lái)說(shuō)是不合理的。 世界上已存在的 Python 代碼數(shù)以億計(jì),因此,任何對(duì)該語(yǔ)言的更改即便僅會(huì)使得現(xiàn)有程序中極少的一部分失效也是難以令人接受的。 就算你可以提供一個(gè)轉(zhuǎn)換程序,也仍然存在需要更新全部文檔的問(wèn)題;另外還有大量已出版的 Python 書(shū)籍,我們不希望讓它們?cè)谝凰查g全部變成廢紙。
如果必須更改某個(gè)特性,則應(yīng)該提供漸進(jìn)式的升級(jí)路徑。 PEP 5 描述了引入向后不兼容的更改所需遵循的流程,以盡可能減少對(duì)用戶的干擾。
Python 是一種對(duì)編程初學(xué)者友好的語(yǔ)言嗎?
是的。
從過(guò)程式、靜態(tài)類(lèi)型的編程語(yǔ)言例如 Pascal, C 或者 C++ 以及 Java 的某一子集開(kāi)始引導(dǎo)學(xué)生入門(mén)仍然是常見(jiàn)的做法。 但以 Python 作為第一種編程語(yǔ)言進(jìn)行學(xué)習(xí)對(duì)學(xué)生可能更有利。Python 具有非常簡(jiǎn)單和一致的語(yǔ)法和龐大的標(biāo)準(zhǔn)庫(kù),而且最重要的是,在編程入門(mén)教學(xué)中使用 Python 可以讓學(xué)生專(zhuān)注于更重要的編程技能,例如問(wèn)題分解與數(shù)據(jù)類(lèi)型設(shè)計(jì)。 使用 Python,可以快速向?qū)W生介紹基本概念例如循環(huán)與過(guò)程等。 他們甚至有可能在第一次課里就開(kāi)始接觸用戶自定義對(duì)象。
對(duì)于之前從未接觸過(guò)編程的學(xué)生來(lái)說(shuō),使用靜態(tài)類(lèi)型語(yǔ)言會(huì)感覺(jué)不夠自然。 這會(huì)給學(xué)生帶來(lái)必須掌握的額外復(fù)雜性,并減慢教學(xué)的進(jìn)度。 學(xué)生需要嘗試像計(jì)算機(jī)一樣思考,分解問(wèn)題,設(shè)計(jì)一致的接口并封裝數(shù)據(jù)。 雖然從長(zhǎng)遠(yuǎn)來(lái)看,學(xué)習(xí)和使用一種靜態(tài)類(lèi)型語(yǔ)言是很重要的,但這并不是最適宜在學(xué)生的第一次編程課上就進(jìn)行探討的主題。
還有許多其他方面的特點(diǎn)使得 Python 成為很好的入門(mén)語(yǔ)言。 像 Java 一樣,Python 擁有一個(gè)龐大的標(biāo)準(zhǔn)庫(kù),因此可以在課程非常早期的階段就給學(xué)生布置一些 實(shí)用 的編程項(xiàng)目。 編程作業(yè)不必僅限于標(biāo)準(zhǔn)四則運(yùn)算和賬目檢查程序。 通過(guò)使用標(biāo)準(zhǔn)庫(kù),學(xué)生可以在學(xué)習(xí)編程基礎(chǔ)知識(shí)的同時(shí)開(kāi)發(fā)真正的應(yīng)用,從而獲得更大的滿足感。 使用標(biāo)準(zhǔn)庫(kù)還能使學(xué)生了解代碼重用的概念。 而像 PyGame 這樣的第三方模塊同樣有助于擴(kuò)大學(xué)生的接觸領(lǐng)域。
Python 的解釋器使學(xué)生能夠在編程時(shí)測(cè)試語(yǔ)言特性。 他們可以在一個(gè)窗口中輸入程序源代碼的同時(shí)開(kāi)啟一個(gè)解釋器運(yùn)行窗口。 如果他們不記得列表有哪些方法,他們這以這樣做:
>>> L = []>>> dir(L)['__add__', '__class__', '__contains__', '__delattr__', '__delitem__','__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__','__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__','__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__','__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__','__sizeof__', '__str__', '__subclasshook__', 'append', 'clear','copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove','reverse', 'sort']>>> [d for d in dir(L) if '__' not in d]['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']>>> help(L.append)Help on built-in function append:append(...)L.append(object) -> None -- append object to end>>> L.append(1)>>> L[1]
通過(guò)使用解釋器,學(xué)生編寫(xiě)程序時(shí)參考文檔總是能伴隨在他們身邊。
There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult the Python wiki for a full list of Python editing environments.
如果你想要討論 Python 在教育中的使用,你可能會(huì)有興趣加入 edu-sig 郵件列表。
分享名稱(chēng):創(chuàng)新互聯(lián)Python教程:Python常見(jiàn)問(wèn)題
新聞來(lái)源:http://fisionsoft.com.cn/article/dhgicge.html


咨詢
建站咨詢
