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