筆者是一個使用Python十幾年的老猿,其間使用Python完成了很多各種各樣的工作,有網路爬蟲、網站應用、自然語言處理和系統運維自動化等方面。深深感受到Python的便捷給工作帶來的高效率,也希望這種高效率能帶給更多的人,包括程式設計師也包括非程式設計師。
近幾年,Python的發展非常快,無論是語言本身的完善提高,還是各行各業的應用都有十足的進步。於是,筆者緊跟最新的Python 3.7的特性,並結合自己這些年來學習和使用Python的體會,來撰寫這個Python教程,希望能帶領Python門外漢進入Python程式設計的世界,也希望能幫助有些Python基礎的人們進一步提升對Python的掌,也希望自己在撰寫的過程中對Python有更加全面深入的理解,希望能和這部教程的所有讀者一起交流和分享,一起學習和進步。
Python是什麼
Python(英式發音:/ˈpaɪθən/, 美式發音:/ˈpaɪθɑːn/)的英文原意思蟒蛇。在計算機領域,它是一種被廣泛使用的高階程式語言,具有現在高階程式語言的特性,完全物件導向,其中的函式、模組、數字、字串都是物件。
Python通常被稱作“指令碼語言”。這是因為它同Perl、Ruby等語言一樣是動態型別程式語言,動態型語言的特性使它具有動態型別系統和垃圾回收機制,能夠自動管理記憶體,那麼程式設計者就可以專注在程式的思想和邏輯上,可以更快速的實現程式功能。
動態語言的執行需要一個叫做“直譯器”(interpreter)的“中間人”程式,它能夠把高階程式語言一行一行地解釋執行。每次執行動態語言編寫的程式時,都要先通過直譯器這個“中間人”解釋轉換成位元組碼(Bytecode)並執行這些位元組碼,因此執行速度比較慢。但是,
Python的設計哲學就是“優雅”、“明確”、“簡單”,讓開發者“用一種方法,最好是隻有一種方法來做一件事”。Python 這種崇尚簡潔的哲學,再加上多年積攢下來的庫(模組),讓開發者如虎添翼快捷的完成很多工作。
Python的執行速度慢是經常被人詬病的,但是它很好的支援用C、C++進行擴充套件,把計算耗時的演算法用C、C++實現並編譯成Python模組供其呼叫,可以大大提高執行速度。這種支援其它語言擴充套件的特性就像膠水一樣,把不同的語言僅僅連線在一起,因此,Python也被成為“膠水語言”。
Python由荷蘭程式設計師吉多·範羅蘇姆(荷蘭語:Guido van Rossum,國人親切稱之“龜叔”)創造。那是1989年的聖誕節期間,為了打發無聊的時間就創造了Python這門語言,今天我們也就有了這個方便快捷的工具來完成各種各樣的工作。
讓我們認識一下龜叔吧:
Python第一版釋出於1991年,相信已經比大多數小猿們老了。近30年的發展,主要成就了兩個主要的版本:Python 2 和 Python 3。2和3的變化有點大,不完全相容。近來十多年,兩個版本共同存在並行發展。時至今日,Python 3 已經發展完善,而Python 2 功成名就即將退出歷史舞臺,官方將於2020年1月1日停止對它的維護。好奇的小猿們可以到官方的倒數計時網站去圍觀一下。
Python直譯器是根據其語法規則編寫的解釋程式,它有很多中不同的實現。
- CPython 官方的Python直譯器,也是最常用的Python,需要區別其它直譯器時才被叫做CPython。用C編寫,新的語言特性也通常先在這裡實現。
- PyPy 使用Python語言寫的Python,沒錯它實現了自我繁殖。最大特點是使用JIT(Just-in-Time Compiler,及時編譯器),速度比CPython要快。
- Jython 原名JPython,用Java實現的Python直譯器。它的特點是,可以直接呼叫Java的各種庫。
- IroPython 面向.NET和ECMA CLI的Python實現,能夠直接呼叫.NET平臺的各種函式庫,可以把Python程式編譯成.NET程式。
Python能做什麼
Python是開源、免費、跨平臺(Windows、Linux、macOS等等)的程式語言,這三個特性使得它有非常廣泛的應用。我們先看看TIOBE的程式語言流行度趨勢圖:
在2018年12月份的最新排名中,Python已經位居第三:
Python的主要應用領域有:
Web程式(網站開發)
Python有非常豐富的Web框架,如Django、Toronado、Flask、Sanic等,可以讓程式設計師輕鬆開發Web程式。
人工智慧
近幾年人工智慧的火爆也帶動了Python的火熱。由於Python的簡潔及其膠水特性,用於人工智慧的深度學習框架如Google的TensorFlow、Facebook的PyTorch和國人主導開發的MxNet等無一例外地都選擇了Python作為其上次操作語言,讓深度學習模型除錯變得非常容易。
網路爬蟲
網路爬蟲最初的應用就是為搜尋引擎抓取資料,而在大資料時代,人們對資料垂涎三尺,通過各種網路爬蟲從網際網路上收集自己想要的資料。如果想進一步瞭解Python爬蟲,可以詳細閱讀猿人學的Python爬蟲教程
科學計算和資料分析
Python擁有非常成熟的模組用於科學計算和資料分析,這裡有大名鼎鼎的Numpy用於多維陣列和矩陣計算,有建立在Numpy之上的SciPy科學計算庫, 也有基於Numpy的用於解決資料分析問題的Pandas,資料視覺化會相簿Matplotlib。這些模組使得Python媲美昂貴的商業軟體Matlab,但確實免費、自由分享的。
自動化運維
伺服器的運維過程可以用Python指令碼實現自動化,Python的跨平臺性讓它在各種作業系統的伺服器上游刃有餘。
金融工程領域
由於Python極高的開發效率,讓交易員可以快速實現、優化交易策略,也讓很多曾經使用C/C++、Java的金融工程師轉向Python。
Python經過近30年的發展,語言本身已經相當完善,周邊各種功能庫也是相當多足夠好,涉足的應用領域非常普遍。下面圖片是維基百科上列出的使用Python編寫的著名應用,看看讓你耳熟能詳的的有多少個?
總結
最後,讓我們用那就著名的話語結束此文:
人生苦短,我用Python
這句話出自C++標準委員會成員Bruce Eckel,原文是:
“Life is short
(You need Python)”
— Bruce Eckel
ANSI C++ Comitee member
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***