人們常說Python語言簡單,編寫簡單程序時好像也確實如此。但實際上Python毫不簡單,它也是一種很複雜的語言,其功能特徵很是豐富,能支持多種編程風格,在幾乎全部方面都能深度定製。要想用好Python,用它解決複雜問題,開發功能正確的、效率高的程序,須要很好地理解上面說明的許多高級概念和特徵,還須要理解這門語言的內在性質。python
Python雖然說是目前很是熱門的一種編程語言,但有關Python編程和應用的書籍,雖不能說是汗牛充棟、鋪天蓋地,也是林林總總、選擇不少。《程序員學Python》與其餘書籍有什麼不一樣呢?程序員
《程序員學Python》正則表達式
裘宗燕 著編程
根據對讀者已有知識基礎的考慮,本書對Python中與其餘語言相似的基本編程機制的介紹相對精練,將更多篇幅集中於各類反映了Python特色的特徵及相關編程和應用技術方面。數組
例如,書中前兩章詳細討論了函數定義的嵌套結構和做用域規則,豐富的形參/實參機制和形實參匹配規則,高階函數的概念和應用,迭代器和可迭代對象的概念和定義,lambda表達式(匿名函數)及其應用,標準組合對象的構造和使用,描述式的概念和應用等。書中還經過較大型的實例展現組合數據對象的應用和相關編程技術。網絡
程序員學習Python不是爲了寫幾個玩具程序,而是爲了開發有用的系統。針對這種需求,本書深刻討論了許多與開發複雜和大型程序有關的問題,以及相關的Python特徵和應用技術。閉包
書中內容包括程序的功能分解、信息局部化、模塊化;Python函數定義、類定義和模塊機制的使用;Python中面向對象機制的相關概念、結構和應用技術,以及一些特殊功能類的構造;程序的模塊分解和管理,複雜模塊結構的物理組織和導入技術等。併發
本書是針對程序員或其餘學過用過至少一種編程語言、有一些編程經驗的人們(如學過計算機基礎課程的大學生)的Python編程著做。並假定讀者對於計算機的基礎概念、程序和編程,都有必定的理解,可是沒用過Python。框架
書中介紹了Python的基本特徵,深刻討論了各方面的重要問題、高級機制和重要技術,目標是幫助讀者深刻理解Python語言,理解如何用好這門語言,理解如何用它寫出真正能用的良好程序。異步
總而言之,本書是一本全面介紹Python語言各方面特徵和編程技術的著做,其內容涵蓋了Python核心語言的全部方面,討論的內容足以支持讀者使用Python去開發複雜的大型Python程序。
Python語言的發展和應用
Python語言目前由Python軟件基金會(Python Software Foundation,PSF)主導開發和管理。PSF是一個非營利性的國際組織。Python的官方網址爲python.org,在那裏能夠找到有關Python語言和系統開發的最新信息,還有許多資源信息和連接。
Python語言的開發經歷了許多版本。2000年發佈的Python 2.0代表該語言進入了一個新階段,也是國際上較普遍地接受它的標誌性事件。Python 3.0於2008年年末發佈,設計中整合了有關語言發展的許多成熟想法,對語言作了全面清理,修正了許多重要缺陷,使整個語言的概念體系更加清晰,各方面的結構更具備統一性。
目前,Python的發展和使用還處於2.0版與3.0版並存的階段。PSF早已宣告Python 2.7是Python 2的最後版本,從此只作有限完善,再也不作大的版本升級,開發和研究力量將集中到Python 3.0的開發。通過幾年發展,Python 3.5於2015年9月發佈,Python 3.6於2016年12月發佈。有統計顯示,目前,Python 2.0和3.0在實際開發中的使用比例大約各佔一半(2016年下半年的狀況),後者的使用比例正在不斷上升。有消息說PSF和各重要Python庫的開發者都已肯定,在2020年之後再也不支持Python 2。
因爲這些狀況,本書選擇Python 3.0做爲工做語言,以適應發展須要。書中全部實例(及所附代碼)都在3.5或3.6版本的系統中開發和測試,但這些代碼並不特定於這些版本(除個別專門說明的例外),大都能在各類Python 3.0版本的系統上運行。
Python語言的特色
Python的一個重要設計目標是讓程序簡單、清晰和優雅,堅持一套整齊劃一的設計風格。Python程序具備易寫、易讀、易維護的特色,受到廣大程序員歡迎。這些特質也是致使Python的使用愈來愈普遍的緣由。21世紀以來,Python已發展爲世界上最受歡迎的編程語言之一,其使用很是普遍。國際上一些公司作過(或一直在作)各類編程語言使用狀況的調查,統計結果中Python都位於前四五名以內。它還被TIOBE編程語言排行榜(最有影響力的語言排行榜之一)評爲2010年的年度語言。
Python被普遍認爲是一種容易入門的語言。實際上,Python語言機制的跨度比較大,從完成最簡單計算的表達式開始,一直延伸到許多當前最早進的編程概念,如面向對象的程序設計、數據抽象、迭代器、異步編程等。這些狀況有利於學習者在一個語言裏逐步深刻地學習許多編程概念和技術。Python用正文縮進形式表現程序的結構,具備較好的可讀性。
Python是一種比較高級的編程語言。除了最基本的編程機制外,它還提供了使用方便的數據功能,能夠很方便地組織和管理大批數據。Python的全部編程機制和結構都圍繞着**對象**的概念,程序裏定義和操做的各類實體都是對象,不只全部數據都是對象,函數和類等也是對象。它也能很好支持**面向對象編程**的理念和相關技術。
因爲其基本設計的一些特色,Python代碼和部件比較容易重用,已開發的程序容易修改和擴充,有利於軟件的升級改造,能夠減輕軟件開發者的工做負擔,提升程序開發的效率。此外,Python語言的設計也爲開發大規模軟件系統提供了很好支持。這些是許多IT公司樂於選擇和使用Python做爲其主要開發語言的重要緣由。
在用Python開發程序時,能夠採用交互式的執行方式,隨時把代碼發送給系統,馬上看到執行效果。這種方式令人更容易在編程中作各類試驗,能夠提升工做效率。一個Python程序文件(稱爲模塊)的內容就是一系列簡單或複雜的命令的序列。人們也把這樣的語言稱爲**腳本語言**(script language),其程序就像一個工做腳本。
實際上,Python並非簡單的腳本語言,而是一個能支持大規模軟件開發的通用編程語言,其實現具備較高的執行效率。PSF的Python系統帶有一個很大的標準庫,提供了不少在實際開發中很是有用的功能。此外,全世界的開發者已經爲Python開發了面向各類應用領域的大量專用程序包,例如面向圖形用戶界面的設計和編程,面向網絡應用、數值計算、數據統計和處理、圖形圖像處理、可視化等。針對全部重要應用領域,均可以找到相關的程序包,大大方便了人們用Python開發領域應用軟件和綜合性軟件的工做。
Python語言和標準庫的設計特別考慮了可擴充性,提供了豐富的接口和工具,使有經驗的程序員比較容易使用其餘語言,例如C、C++、CPython(一種專門用於擴充Python的C語言工具)等編寫Python模塊,而後能像Python標準庫包同樣方便地使用。這種狀況也使一些大公司把Python用做高級的**粘接語言**(glue language),用一些較低級的語言實現一批性能要求較高的完成具體工做任務的模塊,然後用Python實現整個系統的高層控制和調度。這樣作,既能得到很好的開發效率,也有利於修改和擴充。
Python基金會提供最新版本的Python語言系統和基本開發環境,任何人均可以避免費獲取。該系統能夠在各類主流計算機和軟件平臺上運行,包含了豐富的標準程序庫和完整文檔。此外,也存在另一些商業的或非商業的Python系統可供選擇。通過多年使用,全世界的Python開發者和使用者已經造成了一個活躍的專業社羣,活躍在世界各地(包括中國),探討、交流學習和使用Python的經驗。互聯網有不少與Python有關的信息,有許多Python討論組。這些都促進了Python語言的學習和傳播。
固然,Python也不是天衣無縫的(完美的語言並不存在),也有些缺點。還有一些使用須要注意的問題。後面討論中也會提到一些這方面的狀況。
Python的應用狀況
Python已經有了很是普遍的實際使用。國際上的許多知名IT公司和機構以其做爲主要開發語言,如美國的Google、Yahoo!、Dropbox等大公司,CERN(歐洲原子能研究中心)、NASA(美國國家航空航天局)等重要機構,還有大量較小的公司和機構。國內企業的應用正在發展,有較大影響的豆瓣網就是用Python開發的。
此外,全世界Python社區一直在努力,開發了許多適合各領域須要的Python包,這些工做也大大推進了Python的應用。例如,Python的科學計算專用擴展庫,包括NumPy(高效的數組數據處理)、SciPy(高性能數值運算)和matplotlib(數學繪圖庫)等。大量面向數據處理和計算的開源包也爲Python使用提供了接口(可做爲庫調用,支持Python應用開發),如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK等。Python語言與這些庫結合,構成的開發環境很適合工程技術人員和科研人員處理實驗數據、製做圖表,以及開發科學和工程計算方面的應用程序。在應用系統領域,Python社羣開發了一批支持網絡應用開發的Python庫和其餘方面的庫及編程框架,這些工做和後續經驗的積累,已經使Python成爲目前使用最多的應用系統開發語言之一。
Python還被普遍用於複雜的和大規模的數據處理,成爲目前人們在研究、開發大數據和人工智能等熱門發展方向時使用最多的語言之一。
Python系統和編程環境
本節簡單介紹PSF主導開發的CPython系統及其附帶的編程環境。對初學者而言,使用這個系統及其所帶的程序包就足夠了。一些開源社團或軟件廠商開發了更強大的開發環境,利用CPython的功能或其餘Python實現。鑑於本書的基本設想和目標讀者羣,這裏不許備涉及任何超出CPython系統的內容。有興趣的讀者能夠本身學習。
Python是一種高級語言,具備易讀易用的形式。爲了運行Python程序,須要有一個Python解釋器來填補Python源程序和計算機之間的鴻溝。PSF的Python系統(CPython,如下說Python系統時專指這個系統)的主要部分就是一個解釋器[1]。
下面以Windows系統中安裝Python的狀況爲例,在其餘系統裏的安裝狀況相似。從PSF網站或其餘地方下載Python安裝文件,在所用計算機環境成功安裝後,一般能夠看到快捷啓動方式。Python系統各部分的安裝位置、系統的啓動方式、啓動後窗口顯示的狀況,在不一樣環境裏可能有些不一樣,但在功能上沒有本質差異。
以命令行方式啓動Python解釋器,啓動後的狀況如圖1所示。解釋器顯示版本等信息,最後一行是**提示符**串`>>>`,能夠在這裏輸入要求執行的命令(程序)。
圖 1 啓動Python解釋器後顯示的命令行窗口
Python解釋器採用解釋方式工做。一旦獲得一個完整的程序單元,它就執行該單元並輸出結果,而後重複。後面還會介紹解釋器工做方式的一些細節。
CPython提供了一個程序開發環境IDLE,使程序員能夠方便地編輯程序並隨時運行。啓動IDLE將看到一個窗口,頂部有標準的菜單條。圖2顯示了IDLE的解釋執行窗口的一個狀況[2],能夠看到解釋器的提示符。輸入一個程序單元(表達式或語句)後換行,解釋器就會執行它並顯示結果。這裏顯示的是執行3個表達式後的狀況。第一個表達式要求計算1的值,解釋器給出1;第二個表達式要求計算1+2;第3個表達式要求計算2的1000次冪,獲得的大整數輸出了幾行。
圖 2 啓動IDLE執行窗口(Shell)的狀況
IDLE的另外一種窗口是編輯器,如圖3所示。在這裏編輯的程序能夠隨時運行。一個代碼單元稱爲一個**模塊**,執行前須要保存爲文件。Python術語中**模塊**和**程序文件**基本是同義詞,程序文件應該以py做爲擴展名。
圖 3 IDLE編輯器窗口
IDLE窗口支持常規的編輯命令。與執行窗口相比,這裏多了Format和Run兩個菜單。Format裏的命令用於修改被編輯程序的格式。Run菜單用於啓動模塊執行,包括啓動(或激活)關聯執行窗口,調用解釋器檢查代碼的語法,從空環境開始執行所編代碼。運行時,解釋器逐一執行其中語句,代碼的標準輸入和輸出(常見的是用標準函數`input`和`print`)經過關聯的執行窗口實現。
IDLE的執行窗口還有一個Debug菜單,其中命令服務於程序調試,須要與編輯窗口配合使用。有關功能將在「附錄C」介紹。此外,運行IDLE時按F1功能鍵,或者經過Help菜單的相應選項,都能打開Python系統自帶的語言文檔。
用IDLE(或其餘編輯器)開發的Python程序(模塊)能夠脫離編輯器,直接交給Python解釋器執行。假設要執行的文件是prog.py,只需在命令行窗口中鍵入:
就能啓動Python執行該程序了[假設Python解釋器已在操做系統(OS)的命令路徑上]。
IDLE是一個簡單的開發環境,在開發複雜的應用系統時能夠考慮用其餘開發環境。有些通用開發環境帶有配合使用CPython的插件,例如Eclipse,能夠在安裝插件後用於Python程序開發。
JetBrains公司的PyCharm是目前比較流行的一個專業開發環境,提供了很好的開發支持。因爲Python程序文件的內容就是普通文本,徹底能夠用任何文本編輯器編輯開發。CPython的標準庫還提供了一些支持調試的包。
前面說過,CPython系統帶有一個標準庫,包含一大批程序包,系統文檔中包含了標準庫包的文檔。標準庫包的狀況豐富多彩,有些包提供一些基礎功能,如數學函數、文件操做、文件輸入輸出、隨機數生成等。另外一些包提供通用的編程服務功能,例如字符串處理、正則表達式、數據持久性、圖形用戶界面編程、併發編程、程序源文件組織等。一些包提供了某些特殊功能,如支持Web應用程序、媒體處理、加密解密等;還有一些支持程序開發、調試等。若是開發中須要某些功能,但語言沒提供,能夠到標準庫中找找。
本書主要關注Python語言自己的編程問題,以後的討論將不涉及工具的使用。本書也不許備做爲標準庫的使用手冊,對標準庫的介紹將限於書中討論Python語言基本功能和編程技術的須要。讀者能夠查看CPython的自帶文檔或其餘材料,找到更多信息。
除了基本的Python系統和標準庫程序包,一些我的、組織或公司也開發了許多第三方庫,或對一些有用的庫作了Python定製。有些庫已被普遍使用,如支持圖形用戶界面開發的wxPython和PyQt。CPython推薦用自帶的庫安裝工具pip安裝其餘庫和程序包,Python參考手冊中有說明。
《程序員學Python》
裘宗燕 著
本書是程序設計領域學者裘宗燕教授的潛心力做,程序員的Python入門和進階指南。書中全面介紹了Python語言的各方面特徵和應用技術,討論了準確理解Python、正確使用Python語言開發程序所須要的深刻概念和狀況,還介紹了用Python開發較大型或較複雜程序時應該瞭解的一些高級功能,如程序的模塊組織和導入系統,生成器、閉包和裝飾器,基本的和高級的面向對象編程機制和技術,以及做爲Python最新擴展的協程和異步編程等。
此外,本書還提供完整的進階內容和對應案例,讓讀者全面深刻地瞭解深度學習的知識和技巧,達到學以至用的目的。