- Python程序設計案例教程
- 徐光俠 常光輝 解紹詞 黃德玲
- 4030字
- 2020-11-21 12:00:56
1.4 Python的優點
Python是一種實際應用較為廣泛的計算機語言,它具有很多優點,比如在設計上堅持清晰劃一的風格,這使得Python成為一門易讀、易維護,并且被大量用戶所歡迎的語言。Python語言的優點如下。
1.免費
Python 的使用和分發是完全免費的。就像其他的開源軟件一樣,例如 Tcl、Perl、Linux 和Apache。你可以從Internet上免費獲得Python系統的源代碼。復制Python,將其嵌入你的系統或者隨產品一起發布都沒有任何限制。
“免費”并不代表“無支持”,恰恰相反,Python的在線社區對用戶需求的響應和商業軟件一樣快。而且,由于Python完全開放源代碼,提高了開發者的實力,并產生了一個很大的專家團隊。盡管學習研究或改變一個程序語言的實現并不是對每一個人來說都那么有趣,但是當你知道還有源代碼和無盡的文檔資源作為幫助的時候,這是多么的令人欣慰。你不需要去依賴商業廠商。
Python 的開發是由社區驅動的,是 Internet 大范圍的協同合作努力的結果。這個團體包括Python 的創始者 Guido van Rossum——Python 社區內公認的“終身的慈善獨裁者”(Benevolent Dictator for Life,BDFL)。Python語言的改變必須遵循一套規范的、有約束力的程序(稱作PEP流程),并且需要經過規范的測試系統進行徹底檢查。
2.高級
每一代編程語言的出現都會將計算機科學提升到嶄新的高度。比如 C 語言誕生了更多的像C++、Java 這樣的現代編譯語言。我們并沒有止步于此,而是有了更強大的、可以進行系統調用的解釋型腳本語言,例如Tcl、Perl和Python。
這些語言都有高級的數據結構,這樣就減少了以前“框架”開發需要的時間。像Python中的列表(大小可變的數組)和字典(哈希表)就是內建于語言本身的。在核心語言中提供這些重要的構建單元,可以鼓勵人們使用它們,縮短開發時間與代碼量,生產出可讀性更好的代碼。
在C語言中,對于混雜數組(Python中的列表)和哈希表(Pyhton中的字典)還沒有相應的標準庫,所以它們經常被重復實現,并被復制到每個新項目中去。這個過程混亂而且容易產生錯誤。C++使用標準模板庫改進了這種情況,但是其標準模板庫是很難與Python內建的列表和字典的簡潔和易讀性相提并論的。
3.可升級
大家常常將Pyhton與批處理或UNIX下的Shell相提并論。簡單的Shell腳本可以用來處理簡單的任務,就算它們可以在長度上(無限度的)增長,但是功能總會有所窮盡。Shell腳本代碼重用度很低,因此,你只能止步于小項目。實際上,即使一些小項目也可能導致腳本又臭又長。Python卻不是這樣,你可以不斷地在各個項目中完善你的代碼,添加額外的新的或者現存的Python元素,也可以隨時重用代碼。Pyhton提倡簡潔的代碼設計、高級的數據結構和模塊化的組件,這些特點可以讓你在提升項目的范圍和規模的同時,確保靈活、一致性并縮短必要的調試時間。
“可升級”這個術語經常用于衡量硬件的負荷,通常指系統添加了新的硬件后帶來的性能提升。我們試圖用“可升級”來傳達一種觀念,這就是:Python提供了基本的開發模塊,你可以在它上面開發你的軟件,而且當這些需要擴展和增長時,Python的可插入性和模塊化結構能使你的項目生機盎然并易于管理。
4.易維護
源代碼維護是軟件開發生命周期的組成成分。只要不被其他軟件取代或被放棄使用,你的軟件通常會保持繼續的再開發。Python項目的成功很大程度上要歸功于源代碼的易于維護,當然這也要視代碼長度和復雜度而定。Python另一個激動人心的優勢就是,當你在閱讀自己六個月之前寫的腳本程序的時候,不會把自己搞得一頭霧水,也不需要借助參考手冊才能讀懂自己的軟件。
5.面向對象
從根本上講,Python是一種面向對象(OOP)的語言。它的類模塊支持多態、操作符重載和多重繼承等高級概念,語法簡潔,十分易于使用。事實上,即使你不懂這些術語,仍會發現學習Python比學習其他面向對象語言要容易得多。
除了作為一種強大的代碼構建和重用手段以外,Python 的 OOP 特性使它成為面向對象系統語言(如C++和Java)的理想腳本工具。例如,通過適當地粘接代碼,Python程序可以對C++、Java和C#的類進行子類的定制。
OOP 是 Python 的一個選擇而已,這一點非常重要。不必強迫自己立馬成為一個面向對象高手,你同樣可以繼續深入學習。就像C++一樣,Python既支持面向對象編程也支持面向過程編程的模式。
6.可混合
Python程序能夠以多種方式輕易地與其他語言編寫的組件“粘接”在一起。例如,Python的C語言API可以幫助Python程序靈活地調用C程序。這意味著可以根據需要給Python程序添加功能,或者在其他環境系統中使用Python。例如,將Python與C或者C++寫成的庫文件混合起來,使Python成為一個前端語言和定制工具。就像之前我們所提到過的那樣,這使Python成為一個很好的快速原型工具。出于開發速度的考慮,系統可以先使用Python實現,之后轉移至C,根據不同時期性能的需要逐步實現系統。
7.可移植
Python的標準實現是由可移植的ANSI C編寫的(ANSI C是由美國國家標準協會ANSI及國際標準化組織ISO推出的關于C語言的標準),可以在目前所有的主流平臺上編譯和運行。例如,如今從PDA(Personal Digital Assistant,掌上電腦)到超級計算機,到處可以見到Python在運行。Python可以在下列平臺上運行(這里只是部分列表)。
?? Linux和UNIX系統。
?? 微軟Windows和DOS(所有版本)。
?? Mac OS(包括OS X和Classic)。
?? BeOS、OS/2、VMS和QNX。
?? 實時操作系統,例如VxWorks。
?? Cray超級計算機和IBM大型機。
?? 運行Palm OS、PocketPC和Linux的PDA。
?? 運行Windows Mobile和Symbian OS的移動電話。
?? 游戲終端和iPod等。
除了語言解釋器本身以外,Python發行時自帶的標準庫和模塊在實現上也都盡可能地考慮到了跨平臺的移植性。此外,Python程序自動編譯成可移植的字節碼,這些字節碼在已安裝兼容版本Python的平臺上運行的結果都是相同的。
這些意味著Python程序的核心語言和標準庫可以在Linux、Windows和其他帶有Python解釋器的平臺無差別地運行。大多數Python外圍接口都有平臺相關的擴展(例如,COM支持Windows),但是核心語言和庫在任何平臺都一樣。Python還包含了一個叫作Tkinter的Tk GUI工具包,它可以使Python程序實現功能完整的,并且無需做任何修改即可在所有主流GUI平臺運行的用戶圖形界面。
8.擴展庫
Python標準庫的確很大。它能夠幫助你完成許多工作,包括正則表達式生成、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI(公共網關接口)、FTP(文件傳輸協議)、電子郵件、XML(可擴展標記語言)、XML-RPC(遠程方法調用)、HTML(超文本標記語言)、WAV(音頻格式)文件、加密、GUI(圖形用戶界面)以及生成其他系統相關的代碼。只要安裝了 Python,所有這些都能做到。
除了標準庫,還有各式各樣的其他高質量庫,你可以在Python包索引找到它們。
9.解釋性
一個用編譯性語言(比如C或C++)寫的程序可以從源文件轉換到你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。運行程序的時候,連接/轉載器軟件把你的程序從硬盤復制到內存中并且運行。而Python語言寫的程序不需要編譯成二進制代碼,你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。這使得使用Python更加簡單。也使得Python程序更加易于移植。
10.功能強大
從特性的觀點來看,Python是一個混合體。它豐富的工具集使它介于傳統的腳本語言(例如, Tcl、Scheme和Perl)和系統語言(例如,C、C++和Java)之間。Python具有腳本語言的簡單性和易用性,并且具有在編譯語言中才能找到的高級軟件工程工具。不像其他腳本語言,這種結合使Python在長期大型的開發項目中十分有用。下面是一些Python工具箱中的工具簡介。
(1)動態類型
Python在運行過程中隨時跟蹤對象的種類,不需要代碼中關于復雜的類型和大小的聲明。事實上,在Python中沒有類型或變量聲明這回事。因為Python代碼不是約束數據的類型,它往往自動地應用了一種廣義上的對象。
(2)自動內存管理
Python 自動進行對象分配,當對象不再使用時將自動撤銷對象(垃圾回收),當需要時自動擴展或收縮。Python能夠代替你進行底層的內存管理。
大型程序支持:為了能夠建立更大規模的系統,Python包含了模塊、類和異常等工具,這些工具允許你把系統組織為組件,使用OOP重用并定制代碼,并以一種優雅的方式處理事件和錯誤。
(3)內置對象類型
Python提供了常用的數據結構作為語言的基本組成部分。例如,列表(list)、字典(dictionary)、字符串(string)。我們將會看到,它們靈活并易于使用。例如,內置對象可以根據需求擴展或收縮,可以任意地組織復雜的信息等。
(4)內置工具
為了對以上對象類型進行處理,Python自帶了許多強大的標準操作,包括合并(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。
(5)庫工具
為了完成更多特定的任務,Python預置了許多預編碼的庫工具,從正則表達式匹配到網絡都支持。Python的庫工具在很多應用級的操作中發揮作用。
(6)第三方工具
由于Python是開放源代碼的,它鼓勵開發者提供Python內置工具之外的預編碼工具。從網絡上,可以找到COM、圖像處理、CORBA ORB、XML、數據庫等很多免費的支持工具。
除了這一系列的Python工具外,Python保持了相當簡潔的語法和設計。綜合這一切得到的就是一個具有腳本語言所有可用性的強大編程工具。
11.使用簡單
運行Python程序,只需要簡單地鍵入Python程序并運行就可以了。不需要其他語言(例如, C或C++)所必須的編譯和鏈接等中間步驟。Python可立即執行程序,這形成了一種交互式的編程體驗和不同情況下快速調整的能力,往往在修改代碼后能立即看到程序改變后的效果。
當然,開發周期短僅僅是Python易用性的一方面的體現。Python提供了簡潔的語法和強大的內置工具。實際上,Python曾被叫作“可執行的偽代碼”。由于它減少了其他工具常見的復雜性,當實現相同的功能時,用Python程序比采用C、C++和Java編寫的程序更為簡單、小巧,也更靈活。下面以Hello World為例介紹。
Java的Hello World程序一般這么寫:
public class Hello{
public static void main(String[] args){
System.out.println("Hello, world!");
}
}
用C++可以這么寫:
#include <iostream>
int main(){
std::cout <<"Hello, world!"<< std::endl;
return 0;
}
而Python只要這樣就可以了:
print ("Hello, world!")
從以上的例子中可以看出,Python代碼非常清晰,變量不用聲明,直接就可以用。
12.內存管理器
C或者C++最大的弊端在于內存管理是由開發者負責的。所以哪怕是對于一個很少訪問、修改和管理內存的應用程序,程序員也必須在執行了基本任務之后履行這些職責。這些沒有必要的負擔和責任常常會分散開發者的精力。
在 Python中,由于內存管理器是由Python解釋器負責的,所以開發人員就可以從內存事務中解放出來,全神貫注于最直接的目標,致力于開發規劃中首要的應用程序。這樣使錯誤更少、程序更健壯、開發周期更短。
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- 嵌入式軟件系統測試:基于形式化方法的自動化測試解決方案
- C語言程序設計習題解析與上機指導(第4版)
- Visual FoxPro程序設計教程
- INSTANT Weka How-to
- Learning OpenCV 3 Computer Vision with Python(Second Edition)
- Node.js:來一打 C++ 擴展
- Advanced Express Web Application Development
- Kubernetes源碼剖析
- Clean Code in C#
- Scala Functional Programming Patterns
- 跟戴銘學iOS編程:理順核心知識點
- JQuery風暴:完美用戶體驗
- iOS開發項目化入門教程
- Getting Started with React VR