- Python程序設(shè)計:編程基礎(chǔ)、Web開發(fā)及數(shù)據(jù)分析
- 李輝 劉洋編著
- 3813字
- 2021-12-17 16:11:38
1.1 認識Python語言
從程序設(shè)計語言的發(fā)展過程來分,計算機程序設(shè)計語言可分為:機器語言、匯編語言和高級語言。Python是一門高級語言。
Python語言具有優(yōu)雅的語法,高效率的數(shù)據(jù)結(jié)構(gòu),屬于純粹的開源自由軟件,相對其他語言(比如Java),具有語法簡潔、易于學習、功能強大、可擴展性強、跨平臺等諸多特點。
Python也是一種擴充性強大的編程語言。它具有豐富和強大的庫,能夠把使用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。所以Python常被稱為“膠水”語言。
1.1.1 Python的發(fā)展歷程
在1989年,Python的創(chuàng)始人Guido van Rossum為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,作為ABC語言的一種升級(ABC是由Guido參加設(shè)計的一種教學語言)。就Guido本人看來,ABC這種語言非常優(yōu)美和強大,是專門為非專業(yè)程序員設(shè)計的。但是ABC語言并不成功,究其原因,Guido認為是其非開放造成的。Guido決心在Python中避免這一錯誤。
之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為Guido是一個名叫Monty Python的喜劇團體的愛好者。就這樣,Python在Guido手中誕生了。
Python已經(jīng)成為最受歡迎的程序設(shè)計語言之一。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言。自從2004年以后,Python的使用率呈線性增長。2020年8月,TIOBE公布的編程語言指數(shù)排行榜上,Python躍居第三。作為人工智能的主要編程語言,從2016年開始,Python的使用比例不斷提升,目前能夠達到9.69%,如圖1-1所示。
要詳細了解Python的現(xiàn)狀,可以訪問Python官方網(wǎng)站:http://www.python.org。
1.1.2 Python的特點
Python具有以下特點。

圖1-1 2020年8月TIOBE公布的編程語言指數(shù)排行榜
1.簡單易學
Python的設(shè)計哲學是“優(yōu)雅”“明確”“簡單”。Python開發(fā)者的哲學是“用一種方法,最好是只有一種方法來做一件事”。由于Python語言的簡潔性、易讀性以及可擴展性,在國內(nèi)外使用Python來教授程序設(shè)計課程的學校越來越多。
2.功能強大(可擴展、可嵌入)
Python既屬于腳本語言,也屬于高級程序設(shè)計語言,所以,Python既具有腳本語言(如Perl、Tcl和Scheme等)的簡單、易用的特點,也具有高級程序設(shè)計語言(如C、C++和Java等)的強大功能。Python具有的一些強大功能如下。
● 動態(tài)數(shù)據(jù)類型:Python在代碼運行過程中跟蹤變量的數(shù)據(jù)類型,不需要在代碼中聲明變量的類型,也不要求在使用之前對變量進行類型聲明。
● 自動內(nèi)存管理:良好的內(nèi)存管理機制意味著程序運行具有更高的性能。Python程序員無須關(guān)心內(nèi)存的使用和管理,Python會自動分配和回收內(nèi)存。
● 大型程序支持:通過子模塊、類和異常等工具,Python可應(yīng)用于大型程序開發(fā)。
● 內(nèi)置數(shù)據(jù)結(jié)構(gòu):Python提供了常用數(shù)據(jù)結(jié)構(gòu)支持。例如,列表、字符串等都屬于Python內(nèi)置對象。同時,Python也實現(xiàn)了各種數(shù)據(jù)結(jié)構(gòu)的標準操作,如合并、分片、排序和映射等。
● 內(nèi)置庫:Python提供豐富的標準庫,從正則表達式匹配到網(wǎng)絡(luò)編程等,使Python可以實現(xiàn)多種應(yīng)用。
● 第三方工具集成:Python很容易集成第三方工具,通過各種擴展包將其應(yīng)用到各種不同領(lǐng)域。
● 可擴展性和可嵌入性:Python提供了支持C/C++的接口,可以方便地使用C/C++來擴展Python。Python提供了API,通過使用API函數(shù)可以編寫Python擴展。
3.具有良好的跨平臺特性(可移植)
Python是用ANSI C實現(xiàn)的。C語言因為跨平臺和良好的可移植性成為經(jīng)典的程序設(shè)計語言。這意味著Python也具有良好的跨平臺特性,可在目前所有的主流平臺上編譯和運行。所以,既可以在Windows下編寫Python程序,也可以輕松地在Linux等各種其他系統(tǒng)中編寫和運行Python程序。
4.面向?qū)ο?/b>
面向?qū)ο螅∣bject Oriented,OO)是現(xiàn)代高級程序設(shè)計語言的一個重要特征。多態(tài)、運算符重載、繼承和多重繼承等面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)的主要特征也在Python的類模塊中得到了很好的支持。由于Python簡潔的語法和數(shù)據(jù)類型系統(tǒng),Python中的OOP也變得極為簡單。
5.Python是免費的開源自由軟件
Python遵循GPL協(xié)議,是免費的開源自由軟件,不管是用于個人還是商業(yè)用途,開發(fā)人員都無須支付任何費用,也不用擔心版權(quán)問題。作為開源軟件,程序員可以獲得Python源代碼,以研究其內(nèi)部細節(jié),并可加以修改使其針對目標更加適用。也可以將Python嵌入系統(tǒng)或隨產(chǎn)品一起發(fā)布。
1.1.3 Python的應(yīng)用領(lǐng)域
作為一門優(yōu)秀的程序設(shè)計語言,Python被廣泛應(yīng)用于各種領(lǐng)域,從簡單的文字處理,到網(wǎng)站和游戲開發(fā),再到數(shù)據(jù)分析、組件集成、網(wǎng)絡(luò)服務(wù)、圖像處理、數(shù)值計算和科學計算等眾多領(lǐng)域,都能見到Python的身影。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如Google、百度、騰訊、汽車之家、美團等?;ヂ?lián)網(wǎng)公司將Python廣泛用于自動化運維、自動化測試、大數(shù)據(jù)分析、爬蟲、Web開發(fā)等領(lǐng)域。Python的應(yīng)用領(lǐng)域簡要說明如下。
● 系統(tǒng)編程:Python提供API(Application Programming Interface,應(yīng)用程序編程接口),能方便地進行系統(tǒng)維護和管理,是很多系統(tǒng)管理員理想的編程工具。
● 圖形處理:Python內(nèi)置了Tkinter(Python默認的圖形界面接口)和標準面向?qū)ο蠼涌赥k GUI API,可以進行程序GUI設(shè)計。同時有PIL等圖形庫支持,使其能夠方便地進行圖形處理。
● 數(shù)據(jù)處理:Python的NumPy擴展庫提供了大量標準數(shù)學庫的接口,例如矩陣對象、標準數(shù)學庫等。SciPy和Matplotlib擴展庫也為Python提供了快速數(shù)組處理、數(shù)值運算以及繪圖功能。眾多的擴展庫使Python十分適合工程技術(shù)、科研人員處理實驗數(shù)據(jù)、制作圖表,甚至開發(fā)科學計算應(yīng)用程序。
● 文本處理:Python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用Python進行XML程序的開發(fā)。
● 數(shù)據(jù)庫編程:Python提供了對目前主流的數(shù)據(jù)庫系統(tǒng)的支持,程序員可通過遵循Python DB-API(數(shù)據(jù)庫應(yīng)用程序編程接口)規(guī)范的模塊與MySQL、Oracle、Microsoft SQL Server、Sybase、DB2、SQLite等數(shù)據(jù)庫通信。Python自帶一個Gadfly模塊,提供了一個完整的SQL環(huán)境。
● 網(wǎng)絡(luò)編程:Python提供了標準的Internet模塊,使Python能夠輕松實現(xiàn)網(wǎng)絡(luò)編程,例如,通過套接字(Socket)進行網(wǎng)絡(luò)通信。
● Web編程:Python支持許多Web開發(fā)工具包,支持最新的XML技術(shù)。使得Python能夠快速構(gòu)建功能完善和高質(zhì)量的網(wǎng)站。很多大規(guī)模軟件開發(fā)計劃,例如Zope,Mnet,BitTorrent及Google都在廣泛地使用它。
● 多媒體應(yīng)用:Python的PyOpenGL模塊封裝了“OpenGL應(yīng)用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用于編寫游戲軟件。
● Python廣泛應(yīng)用于游戲開發(fā)、人工智能、數(shù)據(jù)分析等領(lǐng)域。
1.1.4 Python的版本
Python發(fā)展到現(xiàn)在,經(jīng)歷了多個版本。截至本書成稿時,Python最新版本為3.8。需要注意的是,Python 3.x不再兼容現(xiàn)有的2.x程序。可根據(jù)實際需要選擇使用的版本,當然,選擇較新的版本有利于以后軟件升級。
作為一個開源軟件,Python擁有一個參與者眾多的開發(fā)社區(qū),它保持Python的不斷更新和改進。Python的開發(fā)者通過一個在線的源代碼控制系統(tǒng)協(xié)同工作,所有對Python的修改必須遵循PEP(Python Enhancement Proposal,Python改進提案),并通過Python擴展回歸測試系統(tǒng)的測試。目前,由一個非正式的組織PSF(Python Software Foundation,Python軟件基金)負責組織會議并處理Python的知識產(chǎn)權(quán)問題。
Python 3.x與2.x的主要區(qū)別如下。
1.Python 3.x默認使用UTF-8編碼
Python 3.x源代碼中的字符默認使用UTF-8編碼,可以很好地支持中文或其他非英文字符。例如,在Python 3.x中可使用漢字作為變量名;在Python 2.x中不能使用漢字作為變量名,否則會出錯。
2.print函數(shù)代替了print語句
在Python 3.x中,調(diào)用print函數(shù)來輸出數(shù)據(jù);在Python 2.x中則使用print語句。
3.完全面向?qū)ο?/b>
在Python 2.x中的各種數(shù)據(jù)類型,在3.x中全面升級為類(Class)。例如,在Python 2.x中輸出int數(shù)據(jù)類型:print int的結(jié)果是﹤type‘int’﹥,在Python 3.x中輸出int數(shù)據(jù)類型:print(int)的結(jié)果是﹤class'int'﹥。
4.用視圖和迭代器代替了列表
常用方法或函數(shù)在Python 2.x中返回列表,在3.x中有很多改變。
在3.x中,字典的keys()、items()和values()方法用返回視圖代替了列表,不再支持2.x中的iterkeys()、iteritems()和itervalues();在3.x中,map、filter和zip函數(shù)用返回迭代器代替了列表。
5.比較運算中的改變
比較運算的主要改變?nèi)缦隆?/p>
● 用!=代替了﹤﹥。
● 比較運算﹤、﹤=、﹥=和﹥在無法比較兩個數(shù)據(jù)大小順序時,會產(chǎn)生TypeError異常。
● 在Python 2.x中,1﹤”、0﹥None、len﹤=len等運算返回False,而在3.x中則產(chǎn)生TypeError異常。
● 在==和!=中,不兼容類型的數(shù)據(jù)視為不相等。
6.整數(shù)類型的改變
整數(shù)類型的主要改變?nèi)缦隆?/p>
● 取消了long類型,整數(shù)類型只有int一種。不再支持用后綴l或L表示長整數(shù)。
● 在Python 3.x中,/(除法)運算返回浮點數(shù)(float類型)。2.x中兩個整數(shù)的/運算返回整數(shù)(截斷了小數(shù)部分)。
● 整數(shù)不再限制大小,刪除sys模塊中的maxint(最大整數(shù))常量。
● 不再支持以數(shù)字0開頭的八進制常量(如012),而改成用前綴“0o”表示(如0o12)。
7.字符串的改變
在Python 2.x中,字符串中的字符默認為單字節(jié)(8位),字符串的類型可分為str和unicode兩種。帶前綴“u”或“U”的字符串為unicode類型,其他的字符(包含帶前綴“b”“B”,“r”或“R”的字符串)為str類型。所有的字符串在輸出時會將包含的字符直接輸出。
在Python 3.x中,字符默認為unicode字符,即雙字節(jié)字符。字符串的數(shù)據(jù)類型分為str和bytes兩種。仍可使用字符串前綴“u”或“U”,但會被忽略。
在Python 3.x中,字符串前綴“b”或“B”表示二進制字符串,其類型為bytes。
8.取消了file數(shù)據(jù)類型
Python 3.x取消了2.x中的file數(shù)據(jù)類型。使用open函數(shù)打開文件時,返回的是IOTextWrapper類的實例對象。
Python 2.x的open函數(shù)返回的是file類型的對象。
9.異常處理的改變
在Python 3.x中,異常處理的改變主要如下。
● 所有異常都從BaseException繼承,并刪除了StandardError異常。
● 取消了異常類的序列行為和.message屬性。
● 用raise Exception(args)代替raise Exception,args語法。
● 捕獲異常的語法改變,引入了as關(guān)鍵字。
10.其他主要的語法改變
其他主要的語法改變?nèi)缦隆?/p>
● 加入了關(guān)鍵字“as”和“with”。
● 增加了常量“True”“False”和“None”。
● 加入nonlocal語句。使用nonlocal x聲明x為函數(shù)外部的變量。
● 刪除了raw_input()方法。用input函數(shù)代替。
● 去除元組參數(shù)解包。不能像def(a,(b,c)):pass這樣定義函數(shù)了。
● 增加了二進制數(shù),如'0b111'。bin函數(shù)可返回整數(shù)的二進制字符串。
● 擴展了可迭代解包。在Python 3.x里,“a,b,*x=seq”和“*x,a=seq”都是合法的,只要求兩點“x”是list。
● 對象和“seq”是可迭代的。
● 面向?qū)ο笠肓顺橄蠡悺?/p>
● 類的迭代器方法next()改名為__next__(),并增加內(nèi)置函數(shù)next,用以調(diào)用迭代器的__next__()方法。
- 移動購物行為及其執(zhí)行意向機制研究
- 電氣工程專業(yè)綜合設(shè)計教程
- 周三多《管理學》(第5版)筆記和課后習題(含考研真題)詳解
- 行為公司金融(原書第2版)
- 貨幣金融學
- 容器設(shè)計
- 北京大學對外漢語教育學院354漢語基礎(chǔ)[專業(yè)碩士]歷年考研真題視頻詳解【15.1小時高清視頻】
- 男裝CAD工業(yè)制板(第2版)
- 管理學:認知、現(xiàn)論與實踐(第三版)
- 教育科學的探索
- 野生大熊貓棲息地保護的數(shù)學方法
- 軟飲料加工技術(shù)
- 紡織機械基礎(chǔ)概論(第3版)
- 雙金屬協(xié)同電催化劑及性能研究
- 探索的腳步:“十一五”北京高等教育教材建設(shè)論文集