- Python 快速入門(第3版)
- (美)娜奧米·塞德
- 2299字
- 2020-01-16 10:56:38
1.2 Python的長處
Python是Guido van Rossum在20世紀90年代研發的一種現代編程語言(以一個著名的喜劇團體命名)。盡管Python并不能完美地適用于所有應用程序的開發,但它的優勢使其成為許多情況下的理想選擇。
1.2.1 Python易于使用
熟悉傳統語言的程序員會發現,Python很容易學習。包含了所有熟悉的結構,如循環、條件語句、數組等,但在Python中很多都更易于使用。原因有以下幾點。
■ 類型與對象關聯,而不是變量。變量可以被賦予任何類型的值,列表也可以包含許多類型的對象。這也意味著通常不需要進行強制類型轉換(type casting),代碼再也不用受制于預先聲明的類型了。
■ Python通常可以執行更高級別的抽象操作。有一部分原因是源于Python語言的構建方式,另一部分原因是Python的發行版附帶了內容豐富的標準代碼庫。一個下載網頁的程序用兩三行代碼就可以寫完了!
■ 語法規則非常簡單。雖然成為一名專業的Python高手需要耗費很多時間和精力,但即便是初學者也能快速獲取到足夠的Python語法并編寫出實用的代碼。
Python非常適合應用程序的快速開發。用Python編寫應用程序的時間可能只有用C或Java的五分之一,并且代碼行數只有等效C程序的五分之一,這種情況并不少見。當然,這要視具體的應用場景而定。對于那種大部分是在for循環中執行整數運算的數值算法,Python提升的生產力會少得多。對于普通的應用來說,生產力收益可能會比較可觀。
1.2.2 Python富有表現力
Python是一種極具表現力的編程語言。這里的“表現力”是指:同樣是一行代碼,Python可以完成的操作比其他大多數語言都要多。表現力較強的語言,優勢十分明顯,需要編寫的代碼越少,項目完成的速度就越快。代碼越少,程序就越容易維護和調試。
為了體會一下Python的表現力是如何簡化代碼的,請考慮交換兩個變量var1和var2的值。在類似Java的語言中,這需要3行代碼和1個額外的變量:
int temp = var1; var1 = var2; var2 = temp;
在將var2的值賦給var1時,需要先用變量temp暫存var1的值,然后再把該暫存值賦給var2。這個過程并不是很復雜,但是閱讀這3行代碼并理解這是為了完成數值交換,是要花些工夫的,即便是有經驗的程序員也一樣。
相比之下,Python允許在一行代碼中完成相同的交換操作,并且從交換方式就能明顯看出交換確實發生了:
var2, var1 = var1, var2
當然這只是一個很簡單的例子,但類似的優點在Python中俯仰皆是。
1.2.3 Python可讀性好
Python的另一個優點是可讀性好。也許讀者會認為,編程語言只要能被計算機讀懂就可以了,但其實人類同樣得能讀懂。要閱讀代碼的人,可能是調試人員(很可能就是寫程序的人),可能是維護人員(仍然可能是寫程序的人),也可能是任何將來修改代碼的人。凡此種種,總之代碼越容易閱讀和理解越好。
代碼越容易理解,就越易于調試、維護和修改。Python在這方面的主要優勢就是利用縮進。與大多數語言不同,Python堅持要求代碼塊必須整體縮進。盡管這會讓有些人感到奇怪,但好處就是代碼總是能以一種非常易懂的風格進行格式化。
以下是兩小段程序,一個用Perl編寫,另一個用Python編寫。兩者的操作相同,參數都是兩個相同大小的數值列表,返回對其兩兩求和后的列表。我認為Python代碼的可讀性比Perl代碼更好,看起來更干凈,難以理解的符號更少:
# Perl版 sub pairwise_sum { my($arg1, $arg2) = @_; my @result; for(0..$#$arg1) { push(@result, $arg1->[$_] + $arg2->[$_]); } return(\@result); } # Python版 def pairwise_sum(list1, list2): result = [] for i in range(len(list1)): result.append(list1[i] + list2[i]) return result
上面兩段代碼完成的工作相同,但Python代碼勝在了可讀性上。當然,Perl還能有其他的實現方式,其中有一些確實會比以上代碼簡潔得多,但我認為也更加晦澀難懂。
1.2.4 Python功能齊備
Python的另一個優勢是“功能齊備”(batteries included)理念,因其自帶了很多函數庫。基本思路就是,安裝Python后就應該萬事俱備,不需要再安裝其他庫就能真正開始工作了。這就是為什么Python的標準庫自帶了電子郵件、網頁、數據庫、操作系統調用、GUI開發等處理模塊。
例如,只需要寫兩行代碼,就可以用Python編寫一個Web服務器,用于共享某個目錄中的文件。
import http.server http.server.test(HandlerClass=http.server.SimpleHTTPRequestHandler)
無須再安裝用于網絡連接和HTTP的庫,Python都已內置好了,開箱即用。
1.2.5 Python跨平臺
Python還是一種優秀的跨平臺語言,可以在很多平臺上運行,包括Windows、Mac、Linux、UNIX等。因為它是解釋型語言,相同代碼可以在任何裝有Python解釋器的平臺上運行,而目前幾乎所有平臺都具備了Python的解釋器。Python甚至還有在Java(Jython)和.NET(IronPython)中運行的版本,為運行Python提供了更多可能的平臺。
1.2.6 Python免費
Python還是免費的。自始至終,Python就是以開源的方式研發的,并且可以免費獲取。任一版本的Python都可自行下載和安裝,并可用于開發商業或個人應用,分文不收。
雖然世人的態度在慢慢轉變,但由于擔心缺乏技術支持,擔心缺少付費客戶的影響力,有些人仍然對免費軟件持懷疑態度。但是Python已經被許多大牌公司用于實現關鍵業務,谷歌、Rackspace、Industrial Light&Magic和Honeywell只是其中的幾個例子。這些公司和許多其他公司都很清楚,Python是一個非常穩定、可靠且支持良好的產品,擁有一個活躍的、博識的用戶社區。即便提出高難度的Python問題,也能在Python互聯網新聞組中迅速獲得答案,速度會比大多數技術支持電話快得多,而且無須付費、保證正確。
Python和開源軟件
不僅Python是免費的,它的源代碼也可以免費使用,可隨意進行修改、完善和擴展。因為源代碼是免費提供的,所以可供所有人查看并修改。其他那些帶有版權的軟件,鮮有能以合理的費用進行這種修改的。
如果是第一次接觸開源軟件,大家應該要了解,不僅可以自由使用和修改Python,還能夠(也鼓勵)為其做出貢獻并對其進行改進。根據自身的條件、興趣和技能,可以給出財務上的貢獻,例如捐贈給Python軟件基金會(Python Software Foundation,PSF)。也可以參加特殊興趣小組(Special Interest Group,SIG),對Python內核或某個輔助模塊的發行版進行測試并給出反饋。還可以向社區貢獻一些自己或公司開發的東西。當然貢獻的大小完全是自行決定的,但只要有能力就一定要考慮去做點什么。這里正在創造巨大的價值,有機會就來添磚加瓦吧。
Python滿足了很多期許,表現力強大、可讀性好、內置庫豐富、跨平臺,而且還是開源的。難道真的就完美無缺了嗎?
- 極簡算法史:從數學到機器的故事
- Python編程自學手冊
- LabVIEW2018中文版 虛擬儀器程序設計自學手冊
- 高效微控制器C語言編程
- Raspberry Pi Networking Cookbook(Second Edition)
- 控糖控脂健康餐
- 深入淺出Spring Boot 2.x
- Mastering LibGDX Game Development
- HTML5+CSS3網站設計基礎教程
- Selenium Testing Tools Cookbook(Second Edition)
- Android系統級深入開發
- C#應用程序設計教程
- C++從入門到精通(第5版)
- Practical Maya Programming with Python
- MongoDB Administrator’s Guide