從零開始學Python AI開發系列02
在這一課的內容中,我們將簡單介紹Python語言的發展歷史,Python語言的應用領域,以及Python2 和Python3的區別等等。從而讓大家對Python有一個基本的認識。
Python的前世今生
如今,當我們看到Python這個詞的時候,首先想到的已經不再是下面這種令人敬畏的生物。
而在三十年前,情況恰恰相反。
Python語言孕育於上個世紀80年代,而其具體的實現則始於1989年的12月。Python語言的作者是Guido van Rossum,就是下面這個典型的IT Geek。
作為Python語言之父,Guido van Rossum於1956年1月31日出生於荷蘭,並在1982年獲得了阿姆斯特丹大學的數學與計算機科學碩士學位。在Python社區,Van Rossum被稱為「終身的仁慈獨裁者」(BDFL),也就是說他將持續參與Python的開發過程,並在需要的時候做出決定。從2005年到2012年,Van Rossum被Google僱傭, 在那裡他有一半的時間用於開發Python語言。從2013年開始至今,Van Rossum成為Dropbox的僱員。如今,他生活在美國加州的Belmont。
關於Python語言的誕生,Van Rossum在1996年寫道,「大概在1989年12月的時候,我想給自己的聖誕節假期找一個好玩的編程項目來打發時間。而在這段時間裡面,辦公室關門了,我只有一個家用電腦可以用。於是,我決定為構思已久的新的腳本語言寫一個解釋器。這個腳本語言將是ABC語言(另一種非系統語言,大家可以google或者維基搜索)的繼承者,可以很好的為Unix/C黑客所用。出於某種玩世不恭的心態,我為這個項目取名Python,因為我是Monty Python』s Flying Circus(巨蟒劇團之飛翔的馬戲團)的忠實粉絲。
這裡科普一下,Monty Python是上世紀六七十年代非常出名的英國電視喜劇片,於1969年10月5日在BBC開播,總共播出了4季共45集,並在隨後幾十年內繼續影響著喜劇的發展,其對於喜劇的影響力不亞於披頭士樂隊對引用的影響。
看到Python的誕生,我不禁想到,現在的00後10后里面會不會因為看了某部電影或者玩了某款遊戲然後發明一門新的編程語言呢?
2000年的10月16日,Python 2.0版本被正式發布,其中包含了多種重要的新特性,包括垃圾回收機制和對Unicode的支持。在2.0版本發布後,Python語言的開發流程變得更加透明,也受到了開發者社區的廣泛關注。
Python 3.0版本(最初被稱為Python 3000,或者py3k)在2008年的12月3日發布。它是Python語言的一個全新分支,而且不兼容之前的版本。不過儘管如此,Python 3的很多特性也在隨後被賦予了之後發布的Python 2.6.x和2.7.x版本。
最初,Python 2.7的「終結日」被設置為2015年,不過考慮到大量已有項目仍在使用Python 2.x版本,這一時間被推遲到了2020年。
2017年1月的時候,Google宣布將開發一款從Python 2.7到Go語言的轉譯器,這一舉動也被視為對Python 2.7大限將至的一種回應。
Python是一種多範式編程語言,這麼說有點太抽象了。簡單來說,它支持了高級編程語言的多種特性,比如面向對象的編程和結構化編程,還支持函數式編程和面向切面的編程,以及元編程等等。此外,Python通過擴展還可以支持邏輯編程和契約式設計等等高大上的概念。
看了上面這段話,你很可能沒有任何感覺。沒關係,這只是個開始而已。在隨後的學習過程中,我們將會把這些概念通過具體的實例讓大家來逐漸熟悉和了解。
而現在,就像《盜夢空間》中的入夢一樣,只是在你的腦中灑下一顆種子。
在Zen of Python(Python之道)中,對Python語言的編程哲學做了以下的概括:
1.優雅美麗比醜陋好
2.直白比含蓄好
3.簡單比複雜好
4.複雜比難以理解好
5.可讀性很重要
雖然Python語言並沒有完全按照這種思想來設計,但卻具有高度的可擴展性。
Python語言的應用領域
如今,Python語言的應用領域已經非常廣闊,除了最近所有人都在關注的AI深度學習,Python在諸多領域都有著廣泛的應用。
1.網路應用開發
Python可以通過多種方式來進行網路開發:
(1)使用類似Django和Pyramid之類的框架
(2)使用類似Flask和Bottle的微框架
(3)使用類似Plone和django CMS的高級內容管理系統
Python的標準庫還支持多種互聯網協議:
(1)HTML and XML
(2)JSON
(3)Email
(4)支持FTP,IMAP和其它的互聯網協議
(5)簡單易用的socket interface介面
而豐富的第三方類庫提供了更為強大的功能:
(1)Requests,一個非常強大的HTTP 客戶端庫
(2)BeautifulSoup,一種HTML 解析器,可以處理各種HTML內容
(3)Feedparser,可以解析RSS/Atom feeds
(4) Paramiko,可以實現SSH2協議
(5)Twisted Python,一種用於非同步網路編程的框架。
2.科學與數據統計分析
這也是目前Python受到廣泛關注的重要應用領域。
(1)SciPy中包含了數學、科學和工程的多個包。
(2)Pandas用於數據分析和建模
3.桌面GUI開發
Python中主要使用Tk GUI庫來實現用戶界面。
4.軟體開發
對於軟體開發來說,Python通常作為一種輔助語言,而非主要開發語言。
5.商業應用
Python語言也可以用來開發ERP和電子商務系統。
(1)Odoo
(2)Tryton
關於使用Python開發的應用,可以參考這裡:https://wiki.python.org/moin/Applications
可以看到,在Python的所有應用領域中,網路應用以及科學與數據統計分析是最為主流的應用,當然如今在AI時代,Python更是開始大量用於深度學習開發,和C++語言一起成為AI研究與應用開發的兩大主流編程語言。
Python 2 vs Python 3
大家現在也知道了,Python有兩個主要的分支版本,分別是Python 2(如今的版本號是2.7.14)和Python 3(最新的版本號是3.6.3)。
使用Python 2的好處在於,有相當多的第三方庫目前只支持Python 2,而且很多已開發的項目都是基於Python 2的。
然而現在離2020年只剩下兩年多的時間了,繼續使用Python 2似乎有一定的風險。
而使用Python 3的好處和壞處跟Python 2恰恰相反。
作為未來的主流分支,Python 3無疑將獲得更好的支持,但目前仍有部分第三方庫不支持Python 3。
那麼,何去何從呢?
如果是3年前問這個問題,那麼還要糾結一番。不過在2017年底再問這個問題,答案是明顯的。
1.大多數的軟體包都已經支持Python 3
2.Django推薦使用Python 3,而且大量的軟體都已經停止支持Python 2
3.Python 2.7將在2020年終結,如今已經只有兩年多了
4.Python 3正在不斷發展完善,並加入更多誘人的特性。
因此,對於新手開發者來說,個人建議就不要有任何的糾結,直接上Python 3就是。
好了,本課的內容到此為止。
在下一課的內容中,我們將學習如何配置和安裝Python3及其運行環境,以及我們在本系列教程中所需要的第三方工具。
※Python數據分析常見庫介紹之Pandas
※從哪裡開始學好呢?-Python高手成長路
TAG:Python |