掌握多一門程式語言,多一種選擇,多一份機遇,更何況學的是人見人愛,花見花開的Python語言。它目前可佔據程式語言排行榜的第3名,是名副其實的“探花郎”,無論用它做什麼(網路爬蟲、人工智慧、Web應用等) ,我們都不虧,開篇有益。
有趣的話,多說兩句,”無趣”的就總結概述。本章總結概述一下Python的發展歷史和特點,詳細介紹Python的執行和開發環境。
很多程式設計師,都不太喜歡瞭解程式語言的來源和發展歷史,覺得那個讀起來索然無味,廢話多多,但我還是建議你抽點時間看看,Python的來源確實有點意思。
1.1 Python來源
1989年的聖誕節,一位來自荷蘭,名叫Guidio van Rossum的年輕帥小夥子,為了打發無趣的時光,決定改善他參與設計,不是很滿意的ABC語言,隨著研究的深入和功能的完善,其特性超越了ABC。在給這個新的指令碼語言命名時,他想起了喜愛的Monty Pythoh喜劇團體,於是取名為:Python。
通過這個故事,終於知道我們們為什麼發明不了一門程式語言了,對,那是因為我們無論在什麼節假日,都沒有無聊過,而且還豐富多彩。
歷經兩年後,也就是在1991年2月份時,Python終於面向大眾,釋出了第一個公開版本,其版本號為0.9.0。它使用C語言開發實現,支援類、函式、異常處理,還有列表、字典等資料結構。
隨著更多程式設計師的加入,Python快馬加鞭,在1994 年1月份釋出了 Python 1.0;在2000年釋出了Python 2.0;在2008 年 12 月時, 正式釋出了Python 3.0,它也被稱為 "Python 3000" 或 "Py3K。
隨著這幾年 Python 3 的使用率急劇上升,作為新手建議直接從 Python 3 學起。沒必從Python2入手,畢竟Python3和Python2是不相容的,還有Python官方公佈,會在 2020 年 1 月 1 日起,停止對 Python 2 的更新和官方支援。
到這,你可能會問:Python怎麼會獲得那麼多程式設計師的喜歡,它究竟有何特點?
1.2 有何特點
特點挺多的,我們只講幾處重點的。
(1) 簡單易學
Python的語法就像在讀英語一樣,簡單明瞭,一目瞭然,沒有多餘的邊邊角角,讓你能夠更專注於解決業務問題,而無須花費時間去研究語言本身。
它是物件導向的高階語言,具有封裝、繼承、多型等特點,也就意味著你不用考慮如何管理程式記憶體使用等諸類底層細節。
(2) 免費開源
Python 是 FLOSS(自由/開放原始碼軟體)之一。簡單地說,你可以自由地釋出這個軟體的拷貝、閱讀它的原始碼、甚至對它做任何改動,都不用花一分錢。
無論你是出於學習,還是開發商業軟體,都不用擔心授權問題。商業軟體必然把客戶繫結在產權上,無法自拔,而開源軟體則可以讓商業客戶從這種折磨中解放出來。
(3) 跨平臺
如果在某作業系統下開發的軟體,也可在其他系統上執行,那是多麼幸福的一件事呀,而Python就可以滿足。
如果你不使用依賴於系統特性的程式碼,那麼你的Python 程式無需任何修改就可以執行在Linux、Windows、FreeBSD、macOS、Solaris、OS/2、Amiga、AROS、BeOS、Palm OS、VxWorks、PlayStation等平臺上。
(4) 豐富的庫
Python擁有眾多標準庫和第3方庫,你想要的各種領域的庫幾乎都能找得到,那意味著你可以不用重複發明輪子,從而提高工作效率,加快開發進度。
它有正規表示式、文件生成、單元測試、執行緒、資料庫等標準庫。也有網頁瀏覽器、FTP、電子郵件、XML、密碼系統、GUI(圖形使用者介面)、Tk 和其他與系統有關的操作。
還有許多其他高質量的第3方庫,如用於桌面系統開發的wxPython,用於科學計算或數值計算的Numpy和Matplotlib等等。
(5) 解釋性
Python是一門解釋性語言,這意味著它不需要在執行前編譯,在執行程式的時候才翻譯,專門的直譯器負責在每個語句執行的時候解釋程式程式碼。
相對於編譯型語言(如C++或Delphi),Python執行效率會低一些,可好在它的開發效率高,以空間換時間。
隨著硬體的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,而解釋型語言的自身特點也使得編譯器服務商願意花費更多的時間和成本去優化直譯器,解釋型語言效能超過編譯型語言是遲早問題。
1.3 應用領域
國外的Twitter、Google、Yahoo,Facebook,國內的豆瓣、果殼、春雨醫生、知乎(Quora) 等知名企業都在使用Python,我們來看看它可應用在哪些領域裡。
(1) 人工智慧
各種人工智慧演算法、機器學習、神經網路、深度學習等大多基於Python編寫,尤其在PyTorch推出後,更讓其站在了AI時代的前端。
PyTorch有許多優勢,如動態圖機制、網路構建靈活以及擁有強大的社群等。由於其靈活、動態的程式設計環境和使用者友好的介面,受到AI研究人員的推崇。
(2) 網路爬蟲
在爬蟲領域,Python開源庫眾多,一搜一大把,而且還簡單易用。其中最為突出的要數Scrapy框架。
Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,只需要實現少量程式碼,就能夠快速的抓取到資料內容並進行分析和統計。
(3) Web應用
基於Python的Web開發框架比關鍵字還多,常見的有Django、Tornado、Flask、web.py、 Bottle等。
其中Django架構,應用範圍最廣,開發速度非常快,學習門檻也低,能夠幫助你快速的搭建起可用的Web應用程式。
(4) 桌面軟體
開發了那麼多年的程式,經常說跨平臺,跨平臺,只是真正跨過的應用有幾個?大多數Web應用,從一開始定下來平臺後,後期很少更改的。
桌面系統就不同了,從一開始就希望它可以執行在多個平臺上,提供給更多的人使用。Python在這方面也不含糊,提供了PyGTK、PySide、PyQT、WxPython等快速開發桌面統並可跨平臺的框架。
其中使用WxPython的企業最多,而它也是Python創始人,Guidio大哥的最愛。
(5) 遊戲開發
在網路遊戲開發中,Python有很多應用,相比於C++或 Lua,Python有更高階的抽象能力,可以用更少的程式碼描述遊戲業務邏輯。
它非常適合編寫1萬行以上的專案,而且能夠很好的把網遊專案的規模控制在10萬行程式碼以內。
其中Pygame遊戲框架,封裝了圖形、動畫、文字、音訊等操作,方便使用,是眾多遊戲開發工程師的福音。
(6) 科學計算
在早期的時候,NASA和Google就大量使用Python進行各種複雜的科學運算,積累了豐富的科學運算庫。
隨著NumPy、SciPy、Matplotlib等眾多程式庫的開發,Python越來越適合做科學計算、繪製高質量的2D和3D影像。
(7) 雲端計算開發
如果瞭解過雲端計算相關的技術,應該知道目前很火的雲端計算框架OpenStack就是由Python開發的,如果使用它,就需要具備Python的相關技能。
幾乎每家雲端計算服務商,都提供了Python應用的相關介面,使用它,可很快的進行整合開發。
(8) 金融分析
資料分析已經深入到各個行業中,尤其在金融領域的應用是最廣闊的。瞭解並掌握了Python金融資料分析,對於今後就業相當有吸引力。
Python中的Numpy、Pandas、Scipy等資料分析模組,可以實現金融分析策略,如“雙均線”、“周規則交易”、“羊駝策略”等。
一個當了10年技術總監的老傢伙,分享多年的程式設計經驗。想學程式設計的朋友,可關注今日頭條:老陳說程式設計。我將分享Python,前端(小程式)和App方面的程式設計知識。關注我,沒錯的。