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