天天看點

為什麼我要學python?

一、Python是什麼

相信混迹IT界的很多朋友都知道,Python是近年來最火的一個熱點,沒有之一。從性質上來講它和我們熟知的C、java、php等沒有什麼本質的差別,也是一種開發語言,而且已經進階到主流的二十多種開發語言的top 3(資料源自最新的TIOBE排行榜)。

來頭不小啊!二十多種主流的開發語言,我該從哪一個開始呢?人生苦短,let‘s python!

二、Python的由來和發展趨勢

Python的前世源自鼻祖“龜叔”。1989年,吉多·範羅蘇姆(Guido van Rossum)在阿姆斯特丹為了打發無聊的聖誕節,決心開發一個新的腳本解釋程式,自此Python和創始人“龜叔”開始進入公衆視野。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。

1991年,第一個Python編譯器誕生。它基于C語言實作,并能夠調用C語言的庫檔案。後面曆經版本的不斷換代革新,Python走到了非常具有裡程碑意義的一個節點,即2004的2.4版本誕生了目前最流行的WEB架構Django!六年後Python發展到2.7版本,這是目前為止2.x版本中最新且較為廣泛使用版本。

2.7版本的誕生不同于以往2.x版本的垂直換代邏輯,它是2.x版本和3.x版本之間過渡的一個橋梁,以便最大程度上繼承3.x版本的新特性,同時盡量保持對2.x的相容性。

是以3.x版本在2.7版本之前就已經問世,從2008年的3.0版本開始,python3.x系呈迅猛發展之勢,版本更新活躍,一直發展到現在最新的3.7版本。3.7版本也是目前3.x系列中主流且廣泛使用的版本,後續相關程式的demo,預設均基于3.7版本展開。

三、Python 2 VS Python 3

許多初學者會糾結于從2.x版本還是3.x版本開始python學習之路。這裡簡要對比下個人學習了解到的兩者的差異:

  • 3.x版本中 PRINT IS A FUNCTION,使用起來更簡單友善;
  • 33.x版本中預設使用unicode編碼,媽媽再也不用擔心你的程式編碼問題了;
  • 33.x版本中某些庫進行了改名,具體還有待在後續學習中深入展開;
  • 3目前3.x版本還不能完全支援Twisted module,這恐怕是3.x版本中最大的遺憾。也不要過于糾結這點,據說官方正在彌補這個不足,同時也相信能有辦法解決的:)

長江後浪推前浪,python的未來是屬于3.x系列的,官方宣布2020年之後不再支援2.x系列中最nb的2.7版本,2.x版本将逐漸壽終正寝,最終被銘刻在開發語言的豐碑上。

是以學習3.x版本沒錯的!

四、Python的優缺點

二十多種主流開發語言,python何以能在20多年間以如此迅猛之勢橫掃七大洲八大洋呢?這都是它自身優良的特性決定的.

Python優點:

  1. “優雅”、“明确”、“簡單”

    這是python的定位,使得python程式看上去簡單易懂,初學者容易入門,學習成本更低。但随着學習的不但深入,python一樣可以滿足勝任複雜場景的開發需求。引用一個說法,Python的哲學是就是簡單優雅,盡量寫容易看明白的代碼,盡量寫少的代碼。

  2. 開發效率高

    python作為一種進階語言,具有豐富的第三方庫,官方庫中也有相應的功能子產品支援,覆寫了網絡、檔案、GUI、資料庫、文本等大量内容。是以開發者無需事必躬親,遇到主流的功能需求時可以直接調用,在基礎庫的基礎上施展拳腳,可以節省你很多功力和時間成本,大大降低開發周期。

  3. 無需關注底層細節

    Python作為一種進階開發語言,在程式設計時無需關注底層細節(如記憶體管理等)。

  4. 功能強大

    Python是一種前端後端通吃的綜合性語言,功能強大,php能勝任的角色它都能做,至于後端如何勝任,需要在後續學習中逐漸領悟。

  5. 可移植性

    Python可以在多種主流的平台上運作,開發程式時隻要繞開對系統平台的依賴性,則可以在無需修改的前提下運作在多種系統平台上,具體有待後續學習中深入展開。

一個硬币總有兩面,那麼Python有缺點嗎?答案是肯定的,總結如下:

Python缺點:

  1. 代碼運作速度慢

    因為Python是一種進階開發語言,不像c語言一樣可以深入底層硬體最大程度上挖掘榨取硬體的性能,是以它的運作速度要遠遠慢于c語言。另外一個原因是,Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能了解的機器碼,這個翻譯過程非常耗時,是以很慢。而C程式是運作前直接編譯成CPU能執行的機器碼,是以非常快。

    但需要注意的是,這種慢對于不需要追求硬體高性能的應用場合來講根本不是問題,因為它們比較的數量級根本不是使用者能直覺感受到的!想想程式執行所需的時間數量級?例如開發一個下載下傳MP3的網絡應用程式,C程式的運作時間需要0.001秒,而Python程式的運作時間需要0.1秒,慢了100倍,但由于網絡更慢,需要等待1秒,使用者體驗幾乎沒有差别,除非你用非常精确的計時器來計時。

最近開始整理python的資料,部落客建立了一個qq群,希望給大家提供一個交流的同平台 78486745 。

五、Python的适用領域

Python典型的适用領域如下:

  1. 雲計算開發

    雲計算領域最火的語言,典型代表openstack。

  2. web開發

    衆多優秀的web架構,衆多優秀的大型web站點(Youtube,instagrm,豆瓣等)均基于python開發。

  3. 系統運維

    各種自動化工具的開發,CMDB、監控告警系統、堡壘機、配置管理&批量分發工具等均可以搞定。這是自己需要重點學習的領域。

  4. 科學計算、人工智能

    據網上了解用于圍棋大戰的谷歌阿發狗就使用了python開發(但估計隻是部分而已)。

  5. 圖形GUI處理

    暫時沒多少體會,後續領悟吧。

  6. 網絡爬蟲

    這年頭網絡爬蟲無處不在,很多都是基于python開發,包括谷歌的爬蟲。這是爬蟲工程師的必備工具。

六、哪些地方在用Python

來幾個鮮活的知名公司應用案例,以示敬意:

  • 谷歌:Google app engine、google earth、爬蟲、廣告等
  • Youtube: 世界最大的線上視訊網站基于python開發,好強大
  • Instagram:美國最大的圖檔分享網站,全部基于python開發
  • facebook:大量的基礎庫基于python開發
  • Redhat:yum包管理工具基于python開發
  • 國内知名網際網路公司的應用:豆瓣、知乎的網站,還有很多主流的網際網路公司(阿裡、騰訊、百度、金山、搜狐、盛大、網易、新浪、網易、果殼、洋芋等)通過python來完成各種任務。