欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

全球數十萬名程序員都在使用Python,這是為什么呢?

系統 2189 0

本章主要內容

  • 用Python的理由
  • Python的長處
  • Python的短板
  • 學Python 3的理由

如果想了解Python與其他編程語言的差異,以及它當前的地位,請閱讀本章。如果想立即開始學習Python,請略過開頭部分,直接跳到第3章。本章內容是本書不可或缺的組成部分,但對于Python編程確實不是必備知識。

1.1 用Python的理由

現在有數百種編程語言可供使用,從成熟的C和C++到Ruby、C#和Lua等新秀,再到Java這樣的企業級重器。要選擇一門編程語言來學習確實很難。雖然沒有一種語言能適合任何場景,但我覺得,對于大量的編程問題來說,Python都算得上是個好選擇。如果正在學習編程,Python也是一個不錯的選擇。目前全球有數十萬名程序員都在使用Python,并且用戶數每年都在增長。

Python能夠持續吸引新用戶,是有很多理由的。Python是一款真正的跨平臺編程語言,從Windows、Linux/UNIX到Macintosh平臺,從超級計算機到手機,它都能很好地運行。Python可以用于開發小型應用程序和快速原型系統,但也能擴展到足以開發大型程序。Python自帶了功能強大且易于使用的圖形用戶界面(GUI)工具包、Web編程庫等。而且更重要的是,Python完全免費。

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

1.3 Python的短板

雖然Python擁有很多優點,但沒有哪種編程語言能夠勝任所有工作,因此Python并不能完美地滿足一切需求。如果要確定Python是否適用于當前場景,還需要了解Python不擅長的領域。

1.3.1 Python不是速度最快的語言

Python的執行速度可能算得上是一個缺點。Python不是一個完全編譯的語言,而是先編譯為內部字節碼形式,然后交由Python解釋器來執行。Python為某些操作給出了高效的實現,例如,用正則表達式解析字符串,可以做到與自己編寫的任何C語言代碼一樣快,甚至會更快。但在大多數情況下,采用Python會比C之類的語言實現更慢。但大家應該保持以下觀點:對絕大多數應用程序而言,現代計算機的計算能力都是過剩的。開發速度比程序運行速度更為重要,而Python程序通常編寫速度會快很多。另外,用C或C ++編寫的模塊對Python進行擴展也比較容易,程序當中的CPU密集型部分可以交由這些模塊來運行。

1.3.2 Python的庫不算最多

雖然Python自帶了一批優秀的函數庫集合,而且還有很多其他庫可用,但是Python在庫的數量上并不算領先。像C、Java和Perl之類的編程語言,可用的庫集合數量更為龐大。它們在某些領域提供的解決方案是Python所沒有的,或者Python可能只提供了其中的一種可選方案。不過這些往往是相當專業的領域,而Python是很容易擴展的,既可以用Python,也可以用C或其他語言的現有庫。對于幾乎所有的常規計算問題,Python庫的支持能力都非常出色。

1.3.3 Python在編譯時不檢查變量類型

與某些其他編程語言不同,Python變量不像容器那樣工作,而更像是引用整數、字符串、類實例等各類對象的標簽。這表示這些對象本身雖然是有類型的,但引用它們的變量并沒有與類型進行綁定。變量 x 可能在某一行代碼中引用一個字符串,而在另一行代碼中引用一個整數:
全球數十萬名程序員都在使用Python,這是為什么呢?_第1張圖片

Python將類型與對象關聯,而不是與變量關聯,這就意味著Python解釋器無法識別出變量類型不符的錯誤。假設變量 count 本來是用來保存整數的,但如果將字符串 "two" 賦給它,在Python里也完全沒問題。傳統的程序員將這種處理方式算作一個缺點,因為對代碼失去了額外的免費檢查。但是這種錯誤通常不難發現和修復,Python的代碼檢測功能可以避免類型錯誤的發生。大多數Python程序員都認為,動態類型的靈活性是劃得來的。

1.3.4 Python對移動應用的支持不足

在過去的10年中,移動設備的數量和種類都出現了爆炸式的增長,到處都是智能手機、平板電腦、平板手機、Chromebook,運行的操作系統也是五花八門。Python在移動計算領域并不算強大。雖然有解決方案可選,但在移動設備上運行Python并不總是能一帆風順,用Python編寫和發布商業應用還存在問題。

1.3.5 Python對多處理器的利用不充分

現在多核處理器已經普及,在很多情況下也都會帶來性能的明顯提升。但是,由于具有名為全局解釋器鎖(global interpreter lock,GIL)的特性,Python的標準版本并沒有按照多內核來進行設計。詳情請查看David Beazley、Larry Hastings等人關于GIL的討論視頻,或者訪問Python wiki里的GIL頁面。盡管用Python可以運行并發進程,但如果需要“開箱即用”的并發能力,Python可能并不合適。

1.4 學Python 3的理由

Python很多年前就已經出現了,并且還在不斷發展。本書第1版基于Python 1.5.2,Python 2.x作為主流版本已經持續了很多年。本書是基于Python 3.6的,并在Python 3.7的Alpha版中通過了測試。

Python 3最初被異想天開地命名為Python 3000,因為它是Python歷史上第一個打破向下兼容的版本。這就意味著,如果不做任何修改,在低版本Python中編寫的代碼可能無法在Python 3下運行。例如,在低版本的Python中, print 語句不需要在參數外面加上括號:

            
              print "hello"

            
          

在Python 3中, print 成了一個函數,需要加上括號:

            
              print("hello")

            
          

也許有人會想:既然會破壞以前的代碼,為什么還要修改這種細節呢?正因為對任何語言而言這種改動都是件大事,所以Python的核心開發人員仔細考慮過這個問題。盡管Python 3中的變化會破壞與舊代碼的兼容性,但這些變化很小,好處卻很多。新版本Python的一致性更好,更具可讀性,歧義也更少了。Python 3并不是翻天巨變,而是深思熟慮之后的演進。核心開發人員也貼心地提供了代碼遷移方案和工具,可以安全高效地將以前的舊代碼遷移到Python 3中,后續章節中將會介紹。此外還可以利用Six和Future庫來簡化代碼轉換操作。

為什么要學Python 3呢?因為它是迄今為止最好的Python版本。隨著很多項目開始充分利用Python 3的改進之處,它將成為未來幾年的主流Python版本。自從Python 3推出之后,庫的移植工作一直在穩步進行。到目前為止,很多受歡迎的庫都已支持Python 3了。事實上,根據Python就緒頁面所示(http://py3readiness.org),360個最流行的庫中已有359個被移植到Python 3中了。如果確實需要使用未被轉換過的庫,或者要使用基于Python 2建立的代碼,那就繼續使用Python 2.x吧。但如果是剛開始學習Python或新建項目,就使用Python 3吧。Python 3不僅更好用,而且是大勢所趨。

1.5 小結

  • Python是一種現代的高級語言,支持動態類型,帶有簡潔一致的語法和語義。
  • Python跨平臺且高度模塊化,即適用于快速開發,也適用于大規模編程。
  • Python運行速度合理,還可以通過輕松擴展C或C++模塊進一步提升速度。
  • Python內置了很多高級特性,如對象持久化存儲、高級散列表、可擴展類的語法和通用比較函數。
  • Python的庫包羅萬象,如數值計算、圖像處理、用戶界面和Web腳本處理。
  • 有異常活躍的Python社區提供有力的支持。

本文摘自剛剛上架的《Python 快速入門 第3版》
全球數十萬名程序員都在使用Python,這是為什么呢?_第2張圖片

  • Python軟件基金會主席作品!
  • 經典Python入門書
    本書是Python專業人士Naomi Ceder編寫的Python語言的綜合指南。她是一位經驗豐富的教學者,她既能讓讀者關注語言的細節,又能使其具備解決實際問題的能力。本書中配有大量貼切的示例和邊做邊學的習題,有助于讀者掌握每一個重要概念。無論讀者是要抓取網站內容還是想玩轉嵌套元組,都會贊嘆本書的清晰、專注和對細節的重視。

本書主要內容

● 明確涵蓋Python 3。

● 全面介紹核心庫、包和工具。

● 配備精深的習題。

● 新增5章與數據科學相關的內容。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99久久精品免费看国产一区二区 | 日韩色区| 亚洲国产精品久久久 | 精品久久中文字幕 | 91看片淫黄大片欧美看国产片 | 一级特黄欧美 | 午夜视频直播 | 国产嫩草影院在线观看 | 亚洲热久久| 久草在线免费福利视频 | 奇米 影音先锋 | 欧美一区不卡 | 五月婷婷天堂 | 欧美精品一区在线 | 99在线热播精品免费 | 99久久精品国产高清一区二区 | 久久久无码精品成人A片小说 | 精品国精品国产自在久国产应用 | 中文字幕av一区二区三区 | 日本视频在线播放 | 久草视频手机在线观看 | 国产精品国产 | 婷婷国产精品 | 欧美影院 | 亚洲情a成黄在线观看动 | 91精品影视 | 激情五月六月婷婷 | 青青草一区| 亚洲精品在线播放视频 | www.五月婷 | 亚洲精品久久午夜无码一区二区 | 欧美电影精品久久久久 | 99久久久精品国产一区二区 | www色综合 | 日韩成人精品在线 | 亚洲天堂免费看 | 久久黄色大片 | 狠狠色噜噜狠狠狠狠97老肥女 | www.天天色.com | 一级大片免费看 | 亚洲国产精品a一区 |