部分 Pixel 手機只能播放 480p 流媒體視訊,谷歌釋出 Android 12L 更新修復
Python簡介
-
Python翻譯成漢語是蟒蛇的意思,並且Python的logo也是兩條纏繞在一起的蟒蛇的樣子,然而Python語言和蟒蛇實際上並沒有一毛錢關係。
-
-
Python第一個公開發行版發行於1991年,所以這年被當作Python的誕生年。
-
Python 原始碼遵循 GPL(GNU General Public License)協議,這是一個開源的協議,也就是說你可以免費使用和傳播它,而不用擔心版權的問題。
-
前面我們說了Python誕生自1991年,掰掰指頭算算都30年了,比1995年的JAVA語言都早了4年,為何大器晚成,現在才發力?
-
其一,在1990那個年代,計算機效能相比現在差很多,程式執行速度和效率很重要,快速開發不是第一要務,壓榨機器效能才是。Python作為一門解釋型動態語言,在解釋方式上它天生就存在執行速度較慢的問題,因此不被當時程式設計界看好,其追求開發速度、強調簡潔優雅、降低程式設計門檻的核心理念有點超越當時主流。而時至今日,計算機的硬體效能已經得到數量級的提高,計算能力不再是限制程式語言的最重要的因素,敏捷開發成為生產環境下對語言選擇的重要因素,Python很好的滿足了這一點,從而得到快速發展。
-
其二,Python出生不好。作為對比的JAVA出身名門,其東家為SUN,當時網際網路的頭號公司,類似現在Google的地位,因而得到大力推廣,並且有一群能力強、專職、有組織的團隊進行開發和維護,所以很快獲得成功,普及開來,至今仍然霸佔著程式語言的榜首位置。而Python是個人編寫的,寒門出身,龜叔沒有三頭六臂,個人時間精力都是有限的,雖然有一些志願者幫忙做一些事情,但無疑和JAVA的正規軍相比,能量還是要差了很多,這些都導致Python在初期發展得較為緩慢,甚至到如今都還未解決其被詬病的GIL問題。
-
Python語言特點
簡單易學、明確優雅、開發速度快
-
簡單易學:與C和Java比,Python的學習成本和難度曲線不是低一點,更適合新手入門,自底向上的技術攀爬路線。先訂個小目標爬個小山,然後再往更高的山峰前進。而不像C和JAVA光語言學習本身,對於很多人來說就像珠穆朗瑪峰一樣高不可攀。
-
明確優雅:Python的語法非常簡潔,程式碼量少,非常容易編寫,程式碼的測試、重構、維護等都非常容易。一個小小的指令碼,用C可能需要1000行,用JAVA可能幾百行,但是用Python往往只需要幾十行!
-
開發速度快:當前網際網路企業的生命線是什麼?產品開發速度!如果你的開發速度不夠快,在你的產品推出之前別人家的產品已經上線了,你也就沒有生存空間了,這裡的真例項子數不勝數。那麼,Python的開發速度說第二沒人敢稱第一!
跨平臺、可移植、可擴充套件、互動式、解釋型、面向物件的動態語言
-
跨平臺:Python支援Windows、Linux和MAC os等主流作業系統。
-
可移植:程式碼通常不需要多少改動就能移植到別的平臺上使用。
-
可擴充套件:Python語言本身由C語言編寫而成的,你完全可以在Python中嵌入C,從而提高程式碼的執行速度和效率。你也可以使用C語言重寫Python的任何模組,從根本上改寫Python,PyPy就是這麼幹的。
-
互動式:Python提供很好的人機互動介面,比如IDLE和IPython。可以從終端輸入執行程式碼並獲得結果,互動的測試和除錯程式碼片斷。
-
解釋型:Python語言在執行過程中由直譯器逐行分析,逐行執行並輸出結果。
-
面向物件:Python語言具備所有的面向物件特性和功能,支援基於類的程式開發。
-
動態語言:在執行時可以改變其結構。例如新的函式、物件、甚至程式碼可以被引進,已有的函式可以被刪除或是其他結構上的變化。動態語言非常具有活力。
“內建電池”,大量的標準庫和第三方庫
-
Python為我們提供了非常完善的基礎庫,覆蓋了系統、網路、檔案、GUI、資料庫、文字處理等方方面面,這些是隨同直譯器被預設安裝的,各平臺通用,你無需安裝第三方支援就可以完成大多數工作,這一特點被形象地稱作“內建電池(batteries included)”。
-
在程式設計師界,有一句話叫做“不要重複造輪子”。什麼意思呢?就是說不要做重複的開發工作,如果對某個問題已經有開源的解決方案或者說第三方庫,就不要自己去開發,直接用別人的就好。不要過分迷信自己的程式碼能力,要知道,能作為標準庫被Python內建,必然在可靠性和演算法效率上達到了目前最高水平,能被廣泛使用的第三方庫,必然也是經受了大量的應用考驗。除非公司要求,不要自己去開發,請使用現成的庫。那些造輪子的事情,就交給世界最頂尖的那一波程式設計師去幹吧,沒有極致的思維和數學能力,想創造好用的輪子是很難的。
社群活躍,貢獻者多,互幫互助
-
技術社群的存在就相當於程式設計師手中的指南針,沒有指南針,很多時候,碰到了問題,就像無頭的蒼蠅只能到處亂飛,最終在茫茫的海洋中轉暈致死。技術社群可以給我們對語言的學習和使用提供巨大的幫助,無論是前期的學習,還是日後的工作,只要有問題,技術社群的大牛都可以幫我們解決,有這些助力,可以幫我們更好地瞭解、學習和使用一門語言。技術社群同時還推動Python語言的發展方向,功能需求,促使公司企業更多的使用Python語言,招聘Python程式設計師。
開源語言,發展動力巨大
-
Python是基於C語言編寫的,並且使用GPL開源協議,你可以免費獲取它的原始碼,進行學習、研究甚至改進。眾人拾柴火焰高,有更多的人蔘與Python的開發,促使它更好的發展,被更多的應用,形成良性迴圈。Python為什麼會越來越火就是因為它的開放性,自由性,聚起了人氣,形成了社群,有很多人在其中做貢獻,用的人越來越多,自然就提高了市場佔有率,企業、公司、廠家就不得不使用Python,提供的Python程式設計師崗位就越來越多,這就是開源的力量。
Python的應用方向
-
常規軟體開發
-
Python支援函數語言程式設計和OOP面向物件程式設計,能夠承擔任何種類軟體的開發工作,因此常規的軟體開發、指令碼編寫、網路程式設計等都屬於標配能力。
-
-
科學計算
-
隨著NumPy, SciPy, Matplotlib等眾多程式庫的開發,Python越來越適合於做科學計算、繪製高質量的2D和3D影象。和科學計算領域最流行的商業軟體Matlab相比,Python是一門通用的程式設計語言,比Matlab所採用的指令碼語言的應用範圍更廣泛,有更多的程式庫的支援。
-
-
自動化運維
-
這幾乎是Python應用的自留地,作為運維工程師首選的程式語言,Python在自動化運維方面已經深入人心,比如Saltstack和Ansible都是大名鼎鼎的自動化平臺。
-
-
雲端計算
-
開源雲端計算解決方案OpenStack就是基於Python開發的,搞雲端計算的同學都懂的。
-
-
WEB開發
-
基於Python的Web開發框架不要太多,比如耳熟能詳的Django,還有Tornado,Flask。其中的Python+Django架構,應用範圍非常廣,開發速度非常快,學習門檻也很低,能夠幫助你快速的搭建起可用的WEB服務。
-
-
網路爬蟲
-
也稱網路蜘蛛,是大資料行業獲取資料的核心工具。沒有網路爬蟲自動地、不分晝夜地、高智慧地在網際網路上爬取免費的資料,那些大資料相關的公司恐怕要少四分之三。能夠編寫網路爬蟲的程式語言有不少,但Python絕對是其中的主流之一,其Scripy爬蟲框架應用非常廣泛。
-
-
資料分析
-
在大量資料的基礎上,結合科學計算、機器學習等技術,對資料進行清洗、去重、規格化和針對性的分析是大資料行業的基石。Python是資料分析的主流語言之一。
-
-
人工智慧
-
Python在人工智慧大範疇領域內的機器學習、神經網路、深度學習等方面都是主流的程式語言,得到廣泛的支援和應用。
-
Python的使用者
-
前面講了這麼多先進的當下最前沿的Python技術方向,那麼有哪些公司在使用Python呢?
-
在國內最有名的就是知乎和豆瓣了,它們就是基於Python開發的Web服務。其它的例如百度、阿里、淘寶 、搜狐、金山、騰訊、盛大、網易、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務,幾乎所有的網際網路企業都在招聘Python程式設計師。
-
在國外,更是數不勝數。谷歌的Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、廣告等專案都在大量使用Python進行開發。還有Facebook、Twitter等等等等。幾乎所有的Linux發行版都內建Python直譯器。
Python的缺點
-
我們光說了Python的優點,也得說說它的缺點。任何程式語言都有缺點,Python也不例外。
-
第一個缺點就是執行速度相對慢點,和C程式相比慢不少,這是解釋型語言的通病,你的Python程式碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以會變慢。而C程式作為編譯型語言是執行前直接編譯成CPU能執行的機器碼,所以非常快。(但同時你可以這麼理解,C語言把費時間的活在生產上線之前先花時間幹了,所以執行時就快了。)
-
程式速度不再那麼重要,不一定非要追求極致
-
早些時期CPU比較昂貴,計算資源很吃緊,記憶體也很貴,程式執行的速度和耗費的時間就很重要。這就是導致電腦科學致力於研究不同演算法的效率的原因之一。然而,這已經不再是最重要的因素,因為現在晶片很便宜,而且執行速度有了質的提升。執行時間不再是你最貴的資源。公司最貴的資源現在是員工時間。或者換句話說,就是你。在規定時間內把事情做完比把程式變快更加重要。Python語法簡潔,包含大量的標準庫和第三方庫,用較少的語句就可以完成其它語言上百條語句才能完成的任務,這無疑大大提高了開發的速度和效率,幫助你在儘可能短的時間內完成工作。
-
-
-
第二個缺點就是Python2和Python3的不相容性
-