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