官术网_书友最值得收藏!

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滿足了很多期許,表現力強大、可讀性好、內置庫豐富、跨平臺,而且還是開源的。難道真的就完美無缺了嗎?

主站蜘蛛池模板: 茌平县| 开封市| 承德县| 黄梅县| 八宿县| 徐州市| 玉门市| 陆丰市| 万盛区| 社会| 博白县| 万全县| 睢宁县| 南川市| 富锦市| 灵山县| 佛冈县| 芦山县| 南木林县| 上蔡县| 彭州市| 大连市| 寻乌县| 黔西县| 东台市| 凯里市| 北票市| 山阳县| 沁阳市| 商都县| 岗巴县| 宝兴县| 兴和县| 济源市| 天水市| 昂仁县| 吴桥县| 沁阳市| 永仁县| 大化| 长葛市|