大家在學的熱門編程語言 Python,都用來干什么?
英文原文:What Can I Do With Python?
編者按:Python 因為簡單全面易用而成為近年來大熱的編程語言。但是很多人學習了這門余元的語法和基本功能之后卻不知道 Python 能干什么以及怎么做。Realpython.com 上面的一篇文章于是把 Python 可以做的事情以及不適合做的事情進行了總結。更棒的是,里面還列舉了如何做這些事情的教程和項目案例,是非常適合上手的資源匯總。
你做到了:你已經完成了一門課程,或者終于看完了一本教你用 Python 學習編程基礎的書。你已經掌握了列表、字典、類,也許甚至還有面向對象的概念。
那么……接下來呢?
Python 是一門非常全面的編程語言,在各個不同領域都有著繁多的應用。如果你已經掌握了 Python 的基礎并且恨不得馬上用這門語言做點東西,那現在就是找出下一步應該做什么的時候了。
在本文中,我們提供了若干不同的項目、資源以及教程,你可以利用這些來開始做東西。
別人用 Python 做了什么
你可能會在想,在現實世界里別人都用 Python 開發了什么東西呢。那么首先我們先迅速看一下其中一些大的技術公司是怎么使用這門語言的。
Google 這家公司從一開始就使用 Python 了,而且在這家技術巨頭的主要服務器端語言陣營中贏得了一席之地。Python 的仁慈的獨裁者 Guido van Rossum 甚至還在那里待過幾年,負責監管這門語言的開發工作。
Instagram 喜歡 Python 是因為它的簡潔。這項服務以運行著“全世界最大的 Django web 框架部署”著稱。而 Django 完全是用 Python 寫出來的。
Spotify 將這么語言用到數據分析和后端服務上。據他們的團隊說,Python 的易用讓他們擁有了一條超快的開發渠道。Spotify 要進行海量分析來給用戶提供推薦,所以他們需要一個簡單又好用的東西。Python 正好是救兵!
你還可以看看這篇文章去了解其他公司都用 Python 干什么。如果你已經被說服的話,我們就開始吧!
你可以用 Python 做什么
從 web 開發到數據科學、機器學習等等,Python 在現實世界中的應用是無限的。以下一些項目將會輔助你最終將你的 Python 技能用到正道上。
#1:將乏味的事情自動化
這是一本“針對全新初學者實用編程”的資源。就像標題所述,這本書教你如何將乏味的任務自動化,比如更新電子表格或者重命名計算機的文件。這是想要掌握 Python 基礎的任何人的完美起點。
你將有機會聯系自己到目前為止學到過的東西,去創建字典、抓取 web,折騰文件,并且創建對象和類。你在這本書遇到的上手應用會為你聽過現實世界中的結果,你可以馬上就看到。
這一資源有不同的格式,可保證最好的學習體驗。你可以到 Amazon 上面去買實體書或者免費在網上閱讀。
#2:隨時跟蹤比特幣價格
這段時間似乎人人都在講比特幣。自從 2017 年 12 月價格達到將近 20000 美元的高點后,加密數字貨幣已經進入到數百萬人的腦海里。它的價格在不斷波動,但是很多人都認為這是一筆值得的投資。
如果你正在尋求靠這波虛擬淘金熱賺上一筆,想知道什么時候該出手,那就得隨時了解比特幣的價格。這門教程可以教你如何利用 Python 技能開發出一項比特幣價格通知服務。
這一項目的基礎是 IFTTT 小程序的創建。你講學會如何利用請求庫來發送 HTTP 請求以及如何利用 webhook 將你的 app 與外部服務連接。
這是對加密數字貨幣感興趣的 Python 初學者完美的初始項目。你用這一教程開發的這項服務可以延伸到其他的貨幣,所以別擔心,以太坊也能用上。
#3:創建一個計算器
這個簡單的項目是進入 GUI 編程的一個可靠的辦法。開發后端服務是部署的重要部分之一,但是可能也需要考慮前端的事情。創建用戶可輕松與之交互的應用就顯得無比重要。
如果你對 UX 和 UI 感興趣,那就看看這門教程。從中你會接觸 tkinter 模塊,這是標準的圖形化用戶界面軟件包,通常是跟 Python 捆綁在一起的。
tkinter 模塊是對 Tcl/Tk 進行封裝的 wrapper,是 Tcl 腳本語言與 Tk GUI 框架擴展的結合。如果你已經安裝了 Python,那你就應該已經有 tkinter 框架可用了。一個簡單的調用即可喚出:
frim tkinter import
一旦你完成了這一步設置,就可以用 Python 繼續開發你的第一個 GUI 計算器了。
練習運用 tkinter 模塊,看著你的愿景慢慢在屏幕上實現。然后,一旦你練過手了,就可以拓展學習 Python 其他的 GUI 工具包了。更多信息可以看看 Python GUI 編程的官方文檔。
#4:挖掘 Twitter 數據
感謝互聯網以及逐步壯大的物聯網,我們現在能訪問的數據量之大甚至在 10 年前都是無法想象的。分析是任何跟數據打交道的領域的很大一部分。大家都在討論什么?我們從他們的行為中能看到什么模式?
Twitter 是獲得其中一些問題答案的好地方。如果你對數據分析感興趣,則 Twitter 數據挖掘項目就是利用你的 Python 技能回答有關周圍世界的問題的好辦法。
我們的 Twitter 情緒分析教程將用一個 docker 環境教你如何挖掘 Twitter 數據并且分析用戶情緒。你將學會如何用 Twitter 注冊一個應用,只有這樣你才能訪問他們的 streaming API。
你會看到如何利用 Tweepy 來過濾想要抓取的推特,用 TextBlob 來計算哪些推特的情緒,用 Elasticsearch 來分析他們的內容,以及用 Kibana 來對結果進行可視化。當你完成這門教程后,你應該就可以深入學習其他利用 Python 來進行文字處理和語音識別的項目了。
#5:用 Flask 建立一個微博客
似乎現在人人都有一個博客,但是給自己在網上設立一個中心樞紐不算什么糟糕想法。隨著 Twitter 和 Instagram 的出現,微博客尤其流行起來。在 Miguel Grinberg 搞的這個項目里,你會學習到如何搭建自己的微博客。
這門教程叫做“Flask Mega 指南”,內容可以說不負其名。整篇教程分為 23 章,學習完之后你可以對 Flask 微型 web 框架擁有深刻了解。到項目最后,你應該就能得到一個功能完整的 web 應用了。
你不需要了解有關 Flask 的一切就可以開始,所以對于那些恨不得馬上動手嘗試 web 開發的人來說這是非常好的。
這個教程最近還更新了,把有助于你成為更好的 web 開發者的內容也納入進來了。你可以在網上免費閱讀,或者到 Amazon 去買一本紙質版,或者在他的在線課程中讓作者手把手教你。一旦你做完項目,你就可以繼續學 Django,甚至開始創建更大規模的 web 應用了。
#6:建立一個區塊鏈
盡管區塊鏈起初開發出來是作為金融技術使用的,但現在卻蔓延到了其他的各個行業。區塊鏈幾乎可以用到任何交易上面:從房地產到病歷轉移等等。
如果自己做一個的話牛就會對它的機制有更好的了解。Hackernoon 的教程將輔助你從零開始實現一個區塊鏈。到項目最后,你會對這一交易技術的機制擁有深入的了解。
做區塊鏈需要跟 HTTP 和 request 庫打交道。一旦你安裝了 Flask web 框架,你就可以通過互聯網用 HTTP 請求跟你的區塊鏈進行通信了。
記住,區塊鏈不僅僅適用于加密狂熱者。一旦你自己開發了一個區塊鏈之后,可以看看能不能找到有創意的手段在你感興趣的領域實現這門技術。
#7:Twitter Feed 控制
對開發 web 應用感興趣但是對開始一個大型項目沒有信心?別擔心——我們有東西給你。跟著我們一起學習如何在幾個小時內創建一個簡單的 web app。
Bob Belderbos 分享了自己是如何實現第 40 屆 PyBites Code Challenge 的,在這項編程挑戰中,參與者需要創建一個 web 應用來更好地在 Twitter 上控制每日 Python 提示的新聞流。你可以通讀他的實現以及代碼了解究竟。
這次你用的不是 Flask,而是微型 web 框架 Bottle。Bottle 以迅速部署應用的低依賴度解決方案著稱。既然它是輕量且易用的,所以你很快就能搭建好你的應用。
你還會用 Tweepy 模塊加載 Twitter API 的數據。你會將數據保存到 SQLAlchemy 數據庫里面,所以你還會練習到 SQL 查詢的編寫。Fork 這個代碼庫就可以開始了!
#8:玩 PyGames
這個是給喜歡樂子的人準備的!Python 可用于對各種電玩游戲、冒險游戲以及益智游戲進行編碼,你可以在數天之內完成部署。經典的游戲包括猜單詞、一字棋、乒乓球等等,這些都可以用你剛學會的編程技能去做。
Pygame 庫使得自己開發游戲變得更加容易。它包含了開發游戲所需的幾乎一切。
Pygame 既是免費的也是開源的。里面包含有計算機圖形庫和聲音庫,你可以利用這些可以來給你的應用增加互動功能。
你可以用這個庫來開發很多的游戲。不管你選擇要做哪一個,請隨意把你的東西分享到 Pygame 社區!
#9:選擇你的冒險之旅
如果你更喜歡講故事,用 Python 仍然可以開發出很酷的東西來。
這門語言極其容易編寫,是創作交互式小說的完美環境。這個免費資源會指導你如何用 Python 編寫一個文本型的冒險游戲的過程。
教程需要掌握一些 Python 編程的基本知識,但是它能夠幫助你彌補自己所了解的知識與如何運用這一知識到應用開發上之間的鴻溝。
如果你希望將你的故事提升到新的水平,可以用類似 Ren’Py 這樣的軟件引擎添加聲音和圖像到你的游戲里面,創作出成熟的可視化小說。(然后你可以把它放到 Steam 上看看大家的反應!獲得對自己作品反饋的最好方式是把它發布到世界上)
#10:對機器學習說“Hell World!”
對于對人工智能感興趣的任何人來說,機器學習是理解的關鍵領域。然而,想要開始學習機器是很嚇人的,而且這個領域發展很快,總是在變。
幸運的時候,網上有很多資源可以幫助你試水一下再投入到數據科學的海洋之中。Jason Brownlee 的這門教程是關于用 Python 處理機器學習非常精彩的介紹。
從中你將了解到其中一些最常見的機器學習算法,以及可以輔助你做出預測的 Python 庫。
這門教程極其簡單而且非常容易學。你可以在幾個小時之內完成學習。等你學完之后,就會對如何利用 Python 進行數據科學工作有了迅速的了解。
如果你確認自己已經準備好進一步深入學習了,可以看看我們的海量數據科學教程,在這里你可以學習如何分析指紋、如何建立可視化,以及如何識別語音和面部,這一切都是用 Python 來做的。
#11:接受挑戰
如果你不確定要冒險嘗試上述的一些較大型的項目,而小一點的你又不感興趣的話,那你可能就會想還有其他可以練手的嗎?怎么才能找到令你興奮的東西呢?
編碼挑戰可以幫助你聯系你的 Python 技能并且對你可以用 Python 做到的所有不同事情有初步了解。
簡而言之:給你一個問題,你必須用 Python 找到一個解決方案。
你有機會開發對你有意義的問題的實現,但你也有機會通過提示來深入探究 Python 語言。這些會告訴你應該導入哪些模塊來幫助你解決挑戰。
編碼挑戰是以廣度優先的方式盡可能多地學習庫、方法、以及框架的好辦法。在這里保證你可以找到想要進一步探索的東西。你可能甚至還會回到這份清單里面,并且發現你用來解決其中一個挑戰的東西已經激起了你新的興趣!
以下的挑戰你可以試試:
-
The Python Challenge 有 20 個多個關卡可供挑戰。創建小規模的 Python 腳本來找到相應關卡的解決方案。互聯網上到處都有相關解決方案的提示,不過最好還是自己找到解決辦法!
-
PyBites Code Challenges 的挑戰也有 50 多個!這些挑戰鼓勵你通過開發應用完成任務來掌握 Python。
如果你打算自己搞定這些挑戰而不是按照教程步驟去編碼的話,那么找一份可以隨時求助的資源總是好的。當你在解決這些挑戰時,Python Tricks 這本書是非常出色的案頭信息源。它會帶領你探索 Python 不那么知名的地方,而那些地方正是你解決問題所需要的。
Python 可能不應該干的事情
顯然 Python 是非常全能的語言,你可以用它來做很多事情。但你沒法用它來做完所有事情。實際上,有些東西 Python 就不是很擅長。
作為一門解釋性語言,Python 跟設備驅動程序這樣的底層設備打交道會比較麻煩。比方說,如果你只想用 Python 來寫一個操作系統的話會遇到問題。底層應用最好還是堅持用C或者 C++ 來寫。
然而,甚至這一斷言恐怕也持續不了多久。作為對 Python 靈活性的證明,有人正在致力于擴展 Python 在底層交互中的可用性的項目。MicroPython 只是其中之一,其目標就是為 Python 提供底層能力。
如果我想做的東西沒有出現在這份清單里面怎么辦?
沒關系!這份東西也不是面面俱到的——用 Python 你可以開發無數我們沒有覆蓋到的工具和應用。不要把你自己局限在這份清單里面。這只是一份資源,讓你有個地方可以開始。
這個視頻可以告訴你 Python 還適合哪些其他項目。你還可以看看這篇博客文章,了解去哪里尋找更多的 Python 項目靈感。
最后,該你來做一下調查找到能調動自己興趣的項目了。如果你不確定從何開始,那就關注我們的 Twitter 賬號吧。我們會定期分享來自讀者社區的很酷很有趣的項目。你可能會從中找到自己迫不及待想要做出貢獻的一個。
接下來呢?
好了,這就是你從 Python 初學者發展成嫻熟的 Pythonista 的 11 條道路。
不管你選擇從何開始,必定會找到無數發展編程技能的光明大道。隨便選一個然后開始就是了!你的項目想法沒有出現在這份清單里面?可以在評論區寫出來!提出你的完美項目建議。
如果你還是找不到方向,需要別人推動你一下,可以看看我們關于形成積極學習策略的提示,幫助你回到正軌。