Python是真的火,還是炒得火?來看看它的前世和發展

@Author:BY Runsen

1、Python的前世和發展

Python的前世

1989年聖誕節前夕,山雨欲來風滿樓,計算機程式設計語言界隱隱有大事要發生,果然不出所料。江湖人稱龜叔(Guido von Rossum),就是這位祖籍荷蘭的大牛,在聖誕節百無聊賴的期間,發明了Python。

Python是真的火,還是炒得火?來看看它的前世和發展

之所以選中Python作為程式的名字,是因為龜叔是BBC電視劇——蒙提·派森的飛行馬戲團(Monty Python‘s Flying Circus)的愛好者。ABC是由參加設計的一種教學語言。就龜叔本人看來,ABC這種語言非常優美和強大,是專門為非專業程式設計師設計的。

但是由於ABC語言並沒有成功,究其原因,龜叔認為是非開放造成的。龜叔決心在Python中避免這一錯誤,並獲取了非常好的效果,完美結合了C和其他一些語言。

就這樣,Python在龜叔手中誕生了。那時,龜叔還在荷蘭的CWI(Centrum voor Wiskunde en Informatica,國家數學和計算機科學研究院)。龜叔給Python的定位是“優雅”、“明確”、“簡單”

1991年,第一個Python編譯器誕生。它是用C語言實現的,並能夠呼叫C語言的庫檔案。從一出生,Python已經具有了 :類,函式,異常處理,包含表和詞典在內的核心資料型別,以及模組為基礎的拓展系統。

實際上,Python第一個實現是在 Mac 計算機上。可以說,Python是從ABC發展起來,主要受到了 Modula-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響,並且結合了Unix shell 和C的習慣。

1991年初,Python釋出了第一個公開發行版。

2000年10月16日,Python 2。0版本釋出,增加了實現完整的垃圾回收,並且支援Unicode。同時,整個開發過程更加透明,社群對開發進度的影響逐漸擴大。

2008年12月3日,Python 3。0版本釋出,此版不完全相容之前的Python原始碼。不過,很多新特性後來也被移植到舊的Python 2。6,2。7版本

Python的特性

Python是真的火,還是炒得火?來看看它的前世和發展

(1)簡單易學:Python極其容易上手,因為Python有極其簡單的說明文件。

(2)免費、開源:Python是FLOSS(自由/開放原始碼軟體)之一。使用者可以自由地釋出這個軟體的複製、閱讀它的原始碼、對它做改動、把它的一部分用於新的自由軟體中。

(3)高層語言:用Python語言編寫程式的時候無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。

(4)可移植性:由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺 上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、 BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平臺。

(5)豐富的庫:Python標準庫確實很龐大。它可以幫助處理各種工作,包括正則表示式、文件生成、單元測試、執行緒、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV檔案、密碼系統、GUI(圖形使用者介面)

上面介紹了Python的優點,其實python的也有缺點

(1)執行較慢:相較於c, c++ ,Java編譯型語言,python、javascript解釋型語言不是編譯成機器碼,而是編譯成中間碼。Python在直譯器而不是編譯器的幫助下執行,這將導致它變慢,因為編譯和執行有助於它正常工作。

因為Python在定義變數或函式時不會宣告型別,即使在編譯為pyc位元組碼後變數的型別以及函式返回型別都是未知的,透過上下文推算出實際的型別,是需要佔用記憶體消耗的。比如a + b 先要透過複雜的上下文推薦得出a和b的實際型別,進而再轉換為對應的機器指令,不像其他強型別語言,比如java,所有資料型別在編譯為class檔案時都已經確定了,不需要額外耗時去做型別推算。

(2)效能差:Python的開箱即用的效能速度依然落後於其他語言,比如說具有同樣簡單語法的Nim和Julia,卻可以被編譯為機器程式碼,具有更高的效能優勢。

比如,著名的知乎推薦系統用Go替代Python,隨著業務發展,發現 Python 作為動態解釋型語言,較低的執行效率和較高的後期維護成本帶來的問題逐漸暴露出來:

執行效率較低。知乎目前機房機櫃空間已經不足,按照目前的使用者和流量增長速度,可預見將在短期內伺服器資源告急(針對這一點,知乎正在由單機房架構升級為異地多活架構);

Python 過於靈活的語言特性,導致多人協作和專案維護成本較高

畢竟Python是通用型,高階的動態程式語言。強調的是 code readability,它的句法使得程式設計師能夠比在C++或者java的靜態程式語言相比,編寫更少的程式碼行數。

下面介紹一些的 Python常用高階特性

(1)lambda

lambda函式可以使用任意數量的引數,但必須始終只有一個表示式,我們這樣做是因為lambda函式的目的是執行某種簡單的表示式或操作,而無需完全使用def定義函式。

In [1]: x = lambda a, b : a * bIn [2]: x(2,3)Out[2]: 6

我們執行了一些基本的數學運算,而無需定義完整的函式。這是Python的眾多功能之一,使其成為一種簡潔易用的程式語言。

(2)Map

Map函式是一個內建的Python函式,用於將函式應用於像列表或字典這樣的元素序列。這是執行此類操作的非常乾淨且最重要的可讀方式。map不改變原list,而是返回一個新list

In [3]: list(map(lambda x:x*x ,(1,2,3)))Out[3]: [1, 4, 9]

(3)列表迴圈

列表解析式(List comprehension)或者稱為列表推導式,是 Python 中非常強大和優雅的方法。它可以基於現有的列表做一些操作,從而快速建立新列表。

In [4]: a,*b,c,d = list(range(10))In [5]: aOut[5]: 0In [6]: bOut[6]: [1, 2, 3, 4, 5, 6, 7]In [7]: cOut[7]: 8In [8]: dOut[8]: 9In [9]: [x*x for x in range(5) if x%2!=0]Out[9]: [1, 9]

(4)生成器

透過列表成式,我們可以直接建立個列表。但是,受到記憶體限制,列表容量肯定是有限的。

在Python中,這種邊迴圈邊計算的機制,稱為成器:generator。這樣就不必建立完整的list,從節省量的空間。

In [10]: a = (i for i in range(5))In [11]: aOut[12]: at 0x0000023269845750>In [13]: next(a)Out[13]: 0In [14]: next(a)Out[14]: 1

Python發展

進入2020年3月,新的程式語言排行榜新鮮出爐,TIOBE 最新發布了 3 月程式語言排行榜。

Python是真的火,還是炒得火?來看看它的前世和發展

從榜單中我們可以看到,前三名分別為Java、C、Python。相較於上個月,Python繼續以1。85% 上升至 10。11%,以10。11% 的份額穩居第三。

Python可以應用於眾多領域,如:資料分析、元件整合、網路服務、影象處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型網際網路企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。網際網路公司廣泛使用Python來做的事一般有:自動化運維、自動化測試、大資料分析、爬蟲、Web 等。

不可否認,Python 確實是這個時代最流行、也必須要掌握的程式語言。Python 可以運用在資料處理、Web 開發、人工智慧等多個領域,它的語言簡潔、開發效率高、可移植性強,並且可以和其他程式語言(比如 C++)輕鬆無縫銜接。現如今,不少學校的文科生甚至中學生也開設了此課程,可見其重要程度。

Python職業發展方向

(1)網路爬蟲

Python較為常用的情況就是網路爬蟲,最早使用Python進行網路爬蟲的是Google,而Python也因此被帶動發展起來。

Python在這個方面有許多工具上的積累,例如,用於模擬HTTP請求的Requests、用於HTML DOM解析的PyQuery/BeautifulSoup、用於自動化分散式爬取任務的Scrapy,都使得Python成為資料爬取的首選語言之一。Python同時特別擅於分析與計算爬取後的資料。

(2)Linux運維

用python實現的測試工具及過程,包含伺服器端、客戶端、web、andriod、client端的自動化測試,自動化效能測試的執行、監控和分析,常用selenium appium等框架。

(3)Python Web網站工程師

我們都知道Web一直都是不可忽視的存在,我們離不開網路,離不開Web,利用Python的框架,Django,flask可以做網站,而且都是一些精美的前端介面,還有我們需要掌握一些資料的應用。

(4)Python自動化測試

大家都知道,就是Python語言對測試的幫助是非常大的,自動化測試中Python語言的用途很廣,可以說Python太強大,掌握和熟悉自動化的流程,方法和我們總使用的各個模板,到現在為止,我瞭解的Python使用最多的應該是自動化測試。

(5)資料分析

我們都知道現在來臨了大資料的時代,資料可以說明一切問題的原因,現在很多做資料分析的不是原來那麼簡單,Python語言成為了做資料分析師的第一首選,它同時可以給工作帶來很大的效率。

(6)人工智慧

人工智慧是現在大火的一個方向,這讓Python語言的未來充滿了無限的潛力。機器學習,特別是當前熱門的深度學習中的大部分工具框架都提供了Python介面,因為Python的簡潔清晰的語法是深受開發者喜愛的。

上面的全部我都學過,關注我,帶你們學習Python,成為Python王者