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系統時專指這個系統)的主要部分就是一個解釋器<a href='#anchor01' id='ac01'><sup>[1]</sup></a>。

下面以Windows系統中安裝Python的情況爲例,在其他系統裏的安裝情況類似。從PSF網站或其他地方下載Python安裝文件,在所用計算機環境成功安裝後,通常可以看到快捷啓動方式。Python系統各部分的安裝位置、系統的啓動方式、啓動後窗口顯示的情況,在不同環境裏可能有些不同,但在功能上沒有本質差別。

以命令行方式啓動Python解釋器,啓動後的情況如圖1所示。解釋器顯示版本等信息,最後一行是**提示符**串`>>>`,可以在這裏輸入要求執行的命令(程序)。

圖 1 啓動Python解釋器後顯示的命令行窗口

Python解釋器採用解釋方式工作。一旦得到一個完整的程序單元,它就執行該單元並輸出結果,然後重複。後面還會介紹解釋器工作方式的一些細節。

CPython提供了一個程序開發環境IDLE,使程序員可以方便地編輯程序並隨時運行。啓動IDLE將看到一個窗口,頂部有標準的菜單條。圖2顯示了IDLE的解釋執行窗口的一個情況<a href='#anchor02' id='ac02'><sup>[2]</sup></a>,可以看到解釋器的提示符。輸入一個程序單元(表達式或語句)後換行,解釋器就會執行它並顯示結果。這裏顯示的是執行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最新擴展的協程和異步編程等。

此外,本書還提供完整的進階內容和對應案例,讓讀者全面深入地瞭解深度學習的知識和技巧,達到學以致用的目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章