人生苦短,為何一定要學Python?(文末有贈書)
人生苦短, 我用 Python ,不知道從什么時候開始,這句話開始流行。
人們可能會說, 2017 年是 Python 輝煌的一年。畢竟在這一年中,Python 的增長速度令人驚艷。
主要編程語言的增長趨勢,圖片來自 Stack Overflow
在GitHub 2017年度報告中,Python 超越 Java 成第二受歡迎語言。在 ranked.com 的排名中,Python 是 2017 年最受歡迎人工智能編程語言(第二是 C++,R 并未上榜)。
根據 Stack Overflow 流量統計,2017 年 6 月,Python 第一次成為高收入國家 Stack Overflow 訪問量最大的標簽。
在 TIOBE 2018 年 4 月編程語言排行榜前 20 名中,Python 已躍居到第四位,前三分別為為 Java ,C、C++。
在最新的 HackerRank 2018 開發者技能調查中,根據 HackerRank 的愛恨指數數據,Python 基本贏得了全年齡段開發者的芳心。
隨著 Python 進入小學課本、Python 進入浙江省高考、計算機二級考試加入了“Python 語言程序設計”科目、國務院發布《新一代人工智能發展規劃的通知》等新聞的不斷出現,Python 的這股火就越來越熱。
天吶擼!小學生以后不僅會打王者農藥,還能手把手教你玩轉 Python……據小編掐指一算,這恐怕會讓無數八零后、九零后家長甚是憂愁——今后如何給孩子輔導作業啊???
那么,為什么用 Python,它能用在哪兒,能做什么呢?
利用 Python 進行數據分析
利用 Python 爬取網頁數據
利用 Python 寫小游戲
用 Python 寫一個自動搶票的腳本
Python 有什么優點
Python 在約 40 年前出現,現在已經有數以千計基于這項技術的網站和軟件項目。Python 因其獨有的特點從眾多開發語言中脫穎而出,深受世界各地的開發者喜愛。
下面,我們列舉了 Python 最顯著的一面。所有這些優點使它非常流行,也讓眾多跨國公司選擇了 Python 作為他們的編程語言。
簡單,我們可以說 Python 是簡約的語言,非常易于讀寫,遇到問題時,程序員可以把更多的注意力放在問題本身上,而不用花費太多精力在程序語言、語法上。
免費,Python 是免費開源的。這意味著程序員不用花錢,就可以共享、復制和交換它。
這也幫助 Python 形成了強壯的社區,使它更加完善,技術發展更快。專業人士可以在社區和初學者中分享他們的知識和經驗。那么找到你可以使用的開源庫會得到什么好處?削減一半的項目支出!
兼容性,Python 兼容眾多平臺,所以開發者不會遇到使用其他語言時常會遇到的困擾。
面向對象,Python 既支持面向過程,也支持面向對象編程。在面向過程編程中,程序員可以復用代碼;在面向對象編程中,使用基于數據和函數的對對象。盡管面向對象的程序語言通常十分復雜,Python 卻設法保持簡潔。
庫,Python 社區創造了一大堆各種各樣的 Python 庫。在他們的幫助下,你可以管理文檔,執行單元測試、數據庫、Web 瀏覽器、電子郵件、密碼學、圖形用戶界面和更多的東西。所有東西包括在標準庫,然而,除了它,還有很多其他的庫。
Python 語言的用途
多年來,Python 在各種流行編程語言中一直排名靠前。它幾乎可以適用任何開發,它旨在提高程序員的開發效率而不在于他們編的代碼。
Python 適用于網站、桌面應用開發,自動化腳本,復雜計算系統,科學計算,生命支持管理系統,物聯網,游戲,機器人,自然語言處理等很多方面。
而且,既使對于那些從沒有開發經驗的人來講,Python 的代碼也是簡潔易懂的。
由于 Python 程序代碼簡單,所以與其他程序語言相比,后期的程序維護更容易,更舒心。從商業角度來看,需要的成本降低,程序員的效率提高。
誰使用 Python
Python 開發人員社區不斷壯大,支持庫持續增多,使 Python 成為世界上功能最豐富的編程語言之一,可以適用于任何項目開發。
但我們仍要指出,Python 在科學領域非常流行,特別是在數據挖掘和機器學習等方面。
為了全面理解 Python 相對于其他語言的優勢,我們將把 Python 和最流行的 Web 技術做下比較,先從 PHP 開始。
Python 和 PHP
從開發的角度來看,PHP 是面向 Web 的語言。PHP 應用程序更像是一組單獨的腳本,甚至只是一個單獨入口。
而 Python 是多用途語言,也可以用于 Web 開發,基于 Python 的 Web 應用是加載到內存的完整應用,有自己的內容聲明,保存所有的查詢和請求。
選擇 Python 還是 PHP 進行 Web 應用開發需要注意以下幾點,下面是 Python 和 PHP Web 開發的比較。
通用性
當今時代,趨勢和流行非常重要,一些客戶和產品負責人只想使用最流行最熱門的技術來開發他們的項目,造成了技術精湛的開發人員卻完全沒有客戶和工作的情況出現。
所以在開始學習任何東西前,要確保你要學的技術在未來 1、5 或 10 年內仍保持流行,不會被遺忘。
不過,你大可不必擔心,因為 PHP 和 Python 都屬于世界上最流行的編程語言。
PHP 用于構建 Wikipedia,Yahoo,WordPress,Friendster,MailChimp,Flickr 等許多“巨頭”。
但不要以為 Python 沒什么用,它也用來構建了 YouTube,Instagram,桌面版的Dropbox,Reddit,Bitbucket,Quora,Spotify,Pinterest,Facebook 的內部服務,以及 PayPal 系統的一部分。
框架
當你選擇一項技術的時候,工具的多樣性也是極其重要的,它會使你的工作簡單、方便。如果一個技術為不同的任務提供了多種工具,程序員就不必每件事都要從頭開始了。
PHP 最流行的框架是 Laravel,Symfony,CodeIgniter,Yii 1 and 2,Phalcon 和其他一些。
這些工具能幫你創建功能強大而整潔的應用程序,而 Python 卻沒有這么多引以為豪的框架,最好用的是 Django 和 Flask,但是,我們可以向你保證,隨著 Python 社區的成長,這種情況會很快改變。
學習
這通常是學生第一個想要知道的問題,學習教育的過程越容易,意味著開始工作和賺錢越快。
Python 當然是這類的贏家,它的語法容易,簡單易學,而 PHP 卻不是這樣。掌握 PHP 需要花費很多的時間和努力。
Python 允許你犯些小錯但不會破壞代碼,給新手一些信心繼續學習。從新手的角度來看,想學一些更容易、更靈活的技術,而 Python 正是這樣的技術。
你可以用 Python 創建安全的應用程序,但使用PHP卻需要額外的工具。不過不要忘記,PHP 是專門用于 Web 開發的,也的確用在這方面較多。
Java 和 Python 哪個更好?一些開發人員聲稱 Python 比 Java 更有效率。但這應該先弄清 Python 和 Java 之間的區別是什么。
Java 和 Python 的區別
Java 是一種嚴格的類型語言,這意味著必須顯式聲明變量名。相比之下,動態類型的 Python 則不需要聲明變量。
在編程語言上有許多關于動態和靜態類型的爭論,但有一點應該注意:Python 是一種語法簡單的功能強大的語言,能夠通過編寫腳本就提供優秀的解決方案,并能夠快捷地部署在各個領域。
Java 可以創建跨平臺的應用程序,而 Python 幾乎兼容當前所有操作系統。對新手來講,Python 比 Java 更容易上手,而且代碼易讀性強,但是如果你想你的代碼可以在任何地方都能執行的話,那么還是選擇 Java 吧。
不過 Java 的可移植性也是有代價的,使用 Java 你需要購買更大的機器,消耗更多的內存,并且程序更加難以開發。
Java 比 Python 更復雜,沒有技術背景的人學起來并非易事。
Python 和 C#
現在再來看下 C#。它們的技術差異很大,但都適用于 Web 開發。
Python 和 C# 的區別
簡而言之,Python 原本就被設計的類似用英語表達一樣,只要你使用合適的變量名稱,許多表達式就很容易讀懂。
另外,由于 Python 語法簡單,沒有像句法括號和大量的修飾詞,各種類 C 的構造和不同的初始化變量,所以 Python 寫的代碼易讀易學。
同時,C# 從 C++ 和 Java 遺傳了很多原始表達的類 C 語法,更重要的是,C# 語法使我們必須遵循一定的規則來編寫自已的方法或是繼承類,伴隨而來的是另一大串修飾詞,還有一點不能忘記的是要把代碼段放在括號內。
而 Python 只用 Shift+S 鍵就可以讓代碼看上去很整潔。至于編寫腳本方面,值得一提的是 Python 的腳本是真正的腳本,能夠被解釋器執行。
你可以用任何編輯器打開它,修改后就可以立即運行。這在手邊沒有 IDE 或編譯器的時候優勢十分明顯。而且使用 Python 更容易編寫跨平臺的腳本,甚至都不需要重新編譯。
但是,我們要指出 Python 的一個不足,就是需要在機器上安裝腳本解釋器,至少要在一個包或可執行文件里打包上一個解釋器。
從而使腳本的大小從幾 KB 增加到十幾 M,不過對于現代計算機來說,十幾兆的空間需求基本可以忽略不計,所以這也不是什么大問題。
而 C# 需要 IDE 來編寫程序,C# 的一個好處是,當你編寫基于 Windows 平臺的腳本時,它有強大的各類 Windows 系統組件支持。
例如,注冊表、WMI、網絡等內置工具。C# 可以使用 WINFORMS,你需要的時候可以很容易地創建圖形化接口。
沒法說 Python 和 C# 哪個更好,Python 比 C# 更容易學,開源庫更多,但 C# 的標準庫比 Python 的更好,其性能更高。
Python 和 Ruby
就第一語言而言,Ruby 和 Python 是最受歡迎的。Ruby 是非常流行的構建網站技術,其中最著名的是 Twitter(早期版本),Basecamp,Github,Airbnb,Slideshare,Groupon。
Python 和 Ruby 的區別
Ruby 和 Python 都是面向對象的語言,都是動態和靈活的。這些技術的主要區別在于他們解決問題的方式。Ruby 提供了不同的方法而 Python 通常只有一個。這個事實既是優勢也是劣勢。
最流行的 Ruby 框架是 Ruby on rails。它和 Django 非常類似,因為這兩個框架都是為了解決相同的任務。
如果我們比較這些技術的社區,我們會發現他們幾乎是一樣的,然而形成這些團體的人是不同的。
Python 在數據科學和數學方面很受歡迎,所以在這里你可以找到很多的學者和教授。
記住,當你開發 Web 應用程序時,可以用 RoR 實現,也可以用 Django,兩者都是快速高效的。如果開發偏重于大量計算和數據處理的應用,應該選擇 Python。
任何技術成功的秘密在于圍繞它所構建的社區,不同人群協同工作來確定其未來的發展演變,Python 的支持者是世界上規模最大和構成最多樣化的一個團隊,不僅有數以千計的個人開發者。
而且還有諸如谷歌,Yandex,Dropbox,Mozilla,微軟(在 Visual Studio 中使用),英特爾等許多巨頭公司,他們和其他許多公司一起,已經用 Python 創建了世界上最大的和最受歡迎的項目。
我國人工智能的飛速發展,無疑讓 Python 成為 AI 時代下的新寵兒,作為最接近人工智能語言的 Python 越來越受到國家和社會的重視。
Python 現如今已經逐步在網絡爬蟲、數據分析、AI、機器學習、Web 開發、金融、運維、測試等多個領域扎根壯大。
隨著它的被認可程度逐漸提高,學習并掌握這門語言的人群比例越來越大,無數公司也將為搶占該領域高精尖人才做著殊死搏斗!
可以說,未來誰擁有人工智能領域的技術權威,誰將會擁有新時代互聯網最高話語權。
另一方面,Python 方向崗位的招聘人數需求以及薪資均在水漲船高。下面看一組 2018 年最新的薪酬數據:
盡管大家會調侃,又騙我學 XX,但是,學好 Python,必將讓你在編程生涯中大刀闊斧,勇闖天涯!
所以如果你對自己的專業/工作不滿意,現在正是進入人工智能領域學習就業/轉業的最佳時機。那如何系統學習 Python 呢?一般我們會經歷以下幾個階段。
如何系統學習 Python
了解 Python 編程基礎
一是變量、編程規范、基礎語法等,這也是能夠上手編寫 Python 代碼的前提。
二是數據結構,字符串、列表、字典、元組這些需要非常熟練,數據類型將貫穿你整個編程的始終。
這個部分一些簡單的練習就是,自己構造一個數據類型,然后去實現基本的用法。
比如你自己構造一個列表,實現列表中數據的訪問、更新、刪除等基本操作,比如 len()、max()、min() 函數,以及 append()、count()、extend() 等方法。
函數和方法是實現數據增刪改查的基本途徑,如果你在實際操作中遇到數據操作的問題,可以在具體的數據類型下查找相關用法。
Python 函數及流程控制
學習 Python 的函數和控制語句,是真正去解決問題的過程。如何實現判斷和循壞,如何將固定的功能模塊封裝成函數,這些不僅是寫出代碼的必要條件,也是訓練編程思維的必經之路。
函數這個部分無外乎函數的定義、函數調用以及參數傳遞,但是要能夠嫻熟地寫出函數實現對應的功能,需要注意的細節很多,也需要不斷地訓練。
流程控制則相對要好掌握一些,條件語句和循壞語句在不同的場景下練習幾遍,知道判斷和循環實現的過程,基本上就沒問題了。
其實到這個地方,基本的 Python 知識你已經掌握了,你可以自己去做一些小項目,比如猜數字、各種轉換器、記賬工具……
利用 Python 做些事情
通常在學習一段時間之后,你就會有自我懷疑的過程,貌似真的懂了,但是離做出實際的東西又很遠,這些東西是否有用?
這個時候不妨了解一些第三方庫,你可以做更多的事情。比如用 pandas 作數據處理,用 Matplotlib 做數據可視化分析,用 BeautifulSoup 寫爬蟲,利用 Flask 搭建網站……
這些別人搭好的輪子,你直接拿來用就可以了。當然像寫爬蟲和網站,你還需要了解其他方面的一些知識(比如 HTTP、HTML、JS、數據庫等)。
對于不同的庫,內部的方法、函數你還需要去熟悉,開始的時候先掌握少部分最常用的方法,在遇到實際的問題的時候,再去查對應的更多的用法,這樣會更高效。
深入 Python 編程
其實第三個階段反復練習實踐,你已經基本具備一些工作的技能了,比如 Python 數據分析、網絡爬蟲、寫工具腳本……
首先你要了解 Python 的高級特性,如迭代器、生成器、裝飾器等,了解類和面向對象的理念。
深入下去,你可以去探索 Python 的實現原理,Python 的性能優化,跳出 Python 語言本身,去了解計算機的交互原理,還有很長的路要走,但并不是每一個人都需要這個過程。
但這些高屋建瓴的東西,又是你在這個領域立足生根的重要條件,對于堅定走技術方向的人來說,這個過程是有必要的。這個時候你再去做應用層面的一些東西,又會有更加深刻的理解。
總結下來,學習 Python,最常見的坑有這些:
- 很難找到合適且優質的學習資源,難以下手,或者隨便找一些材料開始學習,極其容易從入門到放棄。
- 遇到問題不知道如何尋找解決辦法,甚至連問題都描述不清楚,經常被一些細小的問題卡住,學習效率不高。
- 在理論學習中無法自拔,學習很久之后,發現還是不知道如何在實際的項目中去應用,缺乏解決問題的能力。
- 看到別人的案例覺得好像是那么回事,但是自己去寫代碼的時候依然很困難,無法訓練編程思維。
福利來啦
身為程序員的您對學習 Python 有哪些好的建議?掃描下方二維碼,關注51CTO技術棧公眾號。歡迎在技術棧微信公眾號留言探討,小編將選出留言最精彩的 10 名網友,送出《Python數據分析從入門到精通》圖書一本~活動截止時間 4 月 20 日十二時整,特別鳴謝電子工業出版社為本次活動提供的圖書贊助。
內容簡介
如果你已經決定學習 Python 數據分析,但是之前沒有編程經驗,那《Python數據分析從入門到精通》你絕不能錯過。Python 數據分析“四劍客”在本書上會進行詳細深入的介紹。
本書詳細地介紹了 IPython、Numpy、pandas、Matplotlib 庫的組成與使用,為科學計算相關人員提供了有用的參考資料。采取循序漸進的寫作風格,對于工具的安裝、使用步驟、方法技巧逐步展開,加以圖解和應用場景,即使完全不懂 Python 和數據分析的人員,也可以流暢地讀完本書。