Python會是最好的語言嗎?
昨天剛好寫了篇Python的文章,應該能回答這個問題。具體如下:
為什么要說Python先說說編程語言,這里有一些梗,程序員之間因為使用不同的編程語言一直都存在著很多鄙視鏈,比如寫匯編的鄙視寫 C 的,寫 C 的鄙視寫 C++的,寫C++的鄙視 寫 C#,寫Java 的鄙視前面所有和C相關的程序員,天天寫腳本的程序員又一起鄙視 Java 程序員,寫靜態語言的和寫動態語言的相互鄙視,寫前端的和寫后端的相互鄙視,Vim 程序員和 Emacs 程序員相互鄙視,然后一起鄙視需要使用 IDE 的程序員。還有一條最勁爆的,所有其他語言的程序員都鄙視 PHP 程序員,因為PHP 程序員說,PHP 是世界上最好的編程語言。
說了這么長長的一條鄙視鏈,只是為了引出今天的重點——Python。同「PHP 是世界上最好的編程語言」一樣舉世無雙的,我們也有一句心法,是Python之父的名言:人生苦短,我用 Python。
Python功能強大,使用簡單,實現一個功能往往只有一種方法。在我剛畢業工作的時候,就接觸了Python和Perl兩種腳本語言。這兩種語言也可以說是非常鮮明的對比,在實現一個功能的時候,Perl 會有十八種實現方法,而且Python可能只有一種。Python開發者的哲學就是“用一種方法,最好是只有一種方法來做一件事”。
在池老師的文章里看到過有程序員這么評價Python:
免費,簡潔,生態好,庫豐富,操心少;之前刷機器學習的題,用 C# 寫了一坨兒。結果人家引個 SciPy 庫,三行代碼搞定這個評價我也是高度贊同。Python的生態環境確實很好,讓你在開發的時候幾乎不用操心太多。
AI時代的寵兒Python有太多的適合機器學習的庫了,而且都可以免費使。比如SciPy 是一個數值計算庫,NumPy 是Python 另一個開源的數值計算擴展庫,Pandas是基于 NumPy 的數據分析工具,matplotlib 是圖形繪制庫,最近火熱的 Scikit-learn則是開源的機器學習框架。
也正因為這樣,在AI時代,Python漸漸地變成了時代的寵兒。不知道如果AI真的這么一直發展下去,久而久之,Python會不會變成Excel這樣的工具,人人都會用,事事都可用。
看看最新出爐的兵器排行榜,Python牢牢的占據著第4名。
Python其實不僅在做機器學習上是把好手,還有很多方面都是一流高手。比如有Scrapy這樣優秀的做爬蟲框架,強大的文本處理功能,Djnago這樣出色的Web開發框架,還可以做自動化測試和運維以及數據分析等等。
所以,我認為無論是已經工作了的同學們或者是還在學校的同學們,多多少少都可以學習一些Python。如果是想要投身機器學習人工智能懷抱的,更是可以趁早開始了。
并不是天下無敵,也有自身的不足Python自身的不足其實也挺多的。
首先語法上自成一派,讓很多老手感到不習慣(比如語句結束不需要分號)。
其次Python 的速度很慢,在不同的任務上比C 語言大約慢數十倍到數千倍不等
再者由于全局解釋器鎖(GIL)的限制,單個Python 程序無法在多核上并發執行;(這個我不知道Python3是什么樣的,沒有去仔細研究過了,歡迎讀者里的大神指點一下)。
不過最讓人頭疼的是,Python 2 和 Python 3 兩個版本長期并行,各成一派,很多模塊需要同時維護兩個不同的版本,給開發者選擇帶來了很多不必要的混亂和麻煩。至于為什么Python 2 和 Python 3 會長期共存了數年之久,原因很復雜,我也說不清楚。但目前官方表示對 2 的支持到2020年。可能新入坑的同學會很糾結,Python2 的生態庫遠遠大于Python3,那么應該要學習哪個版本呢?
我的建議是兩個版本都學,語法上的差別也不是很大,如果非要選擇一個先開始的話,我選Python2。(不要問我為什么,就是這么任性)
圖片來自廖雪峰的Python教程
如何學習Python扯了這么多,最后一部份放點干貨,我們聊聊要如何學習Python。就我本人來說,會學Python,完全是機緣巧合,因為剛工作的時候,組里沒人對Python特別熟,我是被安排自學研究Python,以備日后需要。學著學著,我慢慢的把開發的重心都轉移動Python上面了。
要開始開發,先要安裝,這里就不詳細說了,說了你也記不住,macOS自帶就有,其它系統網上搜一下,一大堆。
有了環境就需要開始學語法了。初學一門新的編程語言的語法時,我會先把賦值、條件判斷和循環這三種語句學會了,這時其實基本的操作就都可以做了,然后再去擴展一些語言獨特的東西,在Python里,你可以學習Python需的面向對象是怎么做的,學一些map,filter, lambda這樣的高階用法。然后估計有個3,5天的時間,就可以開始開發第一個Python應用程序了。
對于新手,在選擇應用程序方向的時候,建議選擇一個自己感興趣的方向,例如對爬蟲感興趣,可以嘗試寫個Python爬蟲去抓取微博或今日頭條的內容, 對web應用感興趣可以開發個人網站,如果有機器學習算法基礎,可以用Python來實現你平時的算法,找個數據集來跑跑(這方面我也比較弱,正在惡補學習中,歡迎有興趣的同學一起來研究)。再或者可以做個推薦系統,算法可以參照我之前的一篇文章(推薦系統入門),可用Python來實現一個小型的推薦系統。(最近自己剛剛實現了一下這個程序,有興趣的同學需要幫助可以留言)
人生苦短,我用 Python!大家一起加油吧。
歡迎大家關注我,你的關注就是我堅持下去最大的動力。另外大家有什么建議或有什么想了解的,也歡迎留言給我,謝謝。