1. 程式人生 > >Python那麽火,到底能用來做什麽?我們來說說Python3的主要應用

Python那麽火,到底能用來做什麽?我們來說說Python3的主要應用

htm 51cto atp 出現 instagram 希望 pytho b2c 代碼塊

如果您正在考慮學習Python,或者您最近剛開始學習,

您可能會問自己:“我到底可以用Python做什麽?”

這是個棘手的問題,因為Python有很多用途。

但是隨著時間的推移,

我發現Python主要可用於一下三個方面:

Web開發
數據科學——包括機器學習、數據分析和數據可視化
腳本編寫
我們就依次來看看吧。

一、Web開發
像Django和Flask這樣基於Python的Web框架最近在web開發中變得非常流行。

這些web框架幫助您用Python創建服務器端代碼(後端代碼)。

這些代碼在您的服務器上而不是在用戶設備以及瀏覽器上(前端代碼)運行。

如果您不熟悉後端代碼和前端代碼之間的區別,請參閱下面腳註。

但是,等等,我為什麽需要web框架呢?

那是因為web框架讓構建通用後端邏輯變得更簡單了。

這包括把不同的URL映射到Python代碼塊、處理數據庫和生成用戶在瀏覽器中看到的HTML文件。

我應該用哪個Python web框架?

Django和Flask是兩種最流行的Python web框架。

如果您剛剛開始學習,那麽可以用它們中的任何一個。

Django和Flask有什麽區別?

主要的對比:

Flask提供簡潔、靈活和細粒度控制。它很是客觀(讓您決定如何實現想要的東西)。
Django提供一種包羅萬象的體驗:您可以獲得管理面板、數據庫接口、ORM(object-relational mappling,對象關系映射),還有開箱即用的應用程序和項目的目錄結構。

您應該選擇:

Flask,如果您專註於體驗和學習機會,或者您想對選用哪個組件有更大的控制權(例如您想使用哪個數據庫和如何與它們交互)。
Django,如果你專註於最終的產品。特別是如果您正在做一個簡單的應用程序(如一個新聞網站、電子商店,或者博客)並且希望有一個直接明了的做法。
換句話說,如果您是位初學者,Flask可能是個更好的選擇,因為用到的組件比較少。

如果您想要更多的定制,那麽Flask也是個更好的選擇。

而且,根據我的數據工程師朋友的看法,

Flask更適合創建那些所謂的REST API的東西,因為它比Django更靈活。

另一方面,

如果您想構建一些簡單的東西,

Django會讓您更快地達到目標。

好,我們接著談談下一個!

二、數據科學 —— 包括機器學習、數據分析和數據可視化
首先,我們來回顧一下什麽是機器學習。

我認為,解釋什麽是機器學習的最好方法莫過於舉個例子。

假設您想開發一個程序用於自動檢測圖片中的內容。

因此,對於下面的這張圖片(圖片1),您希望您的程序能識別出這是條狗。
技術分享圖片

而對於下面的這張圖片(圖片2),您希望您的程序能識別出它是張桌子。
技術分享圖片

您也許會說,我可以用幾行代碼搞定。例如,如果在圖片上有很多淡棕色的像素,那麽我們可以說那是狗。

或者,您可以找到在照片中檢測邊緣的方法。然後,您也許會說,如果有很多直邊,那麽那就是一張桌子。

但是,這種方法很快就遇到麻煩了。如果圖片上是條沒有棕色毛發的白狗怎麽辦?如果圖片上顯示的只是桌子的圓形部分呢?

輪到機器學習大顯身手了。

比如,您給機器學習的算法提供1000張狗的照片和1000張桌子的照片。那麽,它將會學習區別狗和桌子。當您給出一張狗或桌子的新圖片時,它將能夠識別出是狗還是桌子。

我認為,這和嬰兒學習新事物有點類似。嬰兒是如何知道一樣東西看起來像狗,而另一樣東西看起來像桌子呢?可能就是從大量的例子中學到的。

您也許不會明確地告訴一個嬰兒:“如果一樣東西是毛茸茸的,並且有著淡棕色的毛發,那麽它可能是條狗。”

您可能只是說:“那是條狗。這也是條狗。這是桌子。那也是桌子。”

機器學習算法的工作方式大致相同。

您可以把同樣的想法應用於:

推薦系統(像YouTube、Amazon和Netflix在用的)
面部識別
聲音識別
您可能聽說過的流行的機器學習算法包括:

神經網絡
深度學習
支持向量機
隨機森林
您可以使用任何一個上述算法來解決我剛才解釋過的圖片標註問題。

三、將Python用於機器學習
有一些流行的Python機器學習庫和框架,其中最流行的兩個是scikit-learn和TensorFlow。

scikit-learn附帶了一些更流行的內置機器學習算法。我剛才提到了其中的幾個。
TensorFlow更像是個低級庫,它允許您構建自定義機器學習算法。
如果您剛開始一個機器學習項目,那麽我建議您先用scikit-learn。如果您開始遇到效率問題,那麽我建議用TensorFlow。

請註意,您需要微積分和線性代數的基本知識以理解這些課程中的某些內容。

四、那麽數據分析和數據可視化呢?
為了幫助您理解,我在這裏給您舉個簡單的例子。假設,您為一家在線銷售產品的公司工作。

那麽,作為數據分析師,您也許會畫一個類似的條形圖。
技術分享圖片
從這張圖上,我們可以看到,在某個特定的周日,對於某件產品來說,男性購買了400多件,而女性購買了大約350件。

作為一個數據分析師,您也許會對其中的差異做出幾個可能的解釋。

一個很顯然的可能解釋是,該產品在男性中比在女性中更流行。另一個可能的解釋是,樣本量太小,這個差異是偶爾產生的。還有一個可能的解釋是,在周日,由於某種原因,男性比女性更傾向於購買該產品。

為了搞明白哪個解釋是正確的,您可能繪制另一張圖,如下圖所示:
技術分享圖片
我們不再只顯示周日的數據,而是整整一周的數據。正如您所見,從這張圖中,我們可以看到,這種差異在不同的日子裏很一致。

從這個簡單的分析中,您可能得出了結論,對這種差異,一個最有說服力的解釋就是,這個產品更受男性而不是女性歡迎。

另一方面,如果您看到是如下所示的圖呢?
技術分享圖片
折線圖2-同樣由Python生成

那麽,如何解釋出現在周日的差異呢?

您也許會說,也許出於某種原因,男性在周日更傾向於購買該產品。或者,也許只是巧合,男性在周日購買了更多的該產品。

好了,這是個簡化的例子,展示了數據分析在真實世界中看起來的樣子。

我在谷歌和微軟工作的時候做過數據分析,跟這個例子非常相似,只是更復雜一些罷了。事實上,我在谷歌工作時,是用Python來做這種分析,而我在微軟的時候,用的是JavaScript。

在這兩家公司工作的時候,我用SQL從數據庫中提取數據。然後,我會用Python和Matplotlib(在谷歌工作時)或JavaScrip和D3.js(在微軟工作時)進行數據可視化和分析。

五、用Python進行數據分析/可視化
最流行的數據可視化庫之一是Matplotlib。

剛開始學習的話,它是個不錯的庫,因為:

它容易上手
其他一些庫,如seaborn是以它為基礎的。因此,學習Matplotlib可以幫助您隨後學習其他庫。
六、選Python 3還是Python 2?
我會推薦Python 3,因為它更現代化,並且目前它更受歡迎。

腳註:對於後端代碼和前端代碼的的說明(萬一您對這些術語不熟悉)。

假設,您想做個類似於Instagram的東西。

那麽,您需要為每種想支持的設備創建前端代碼:

Swift用於iOS設備
Java用於安卓設備
JavaScript用於web瀏覽器
每組代碼都將在對應類型的設備/瀏覽器上運行。這組代碼將決定應用的布局看上去的樣子,單擊時按鈕的外觀等等。

但是,您仍然需要存儲用戶信息和照片的能力。除了在用戶的設備商儲存這些信息,您還會希望將這些信息儲存在服務器上,這樣,每個用戶的關註者就能看到用戶的照片。

這裏就是後端代碼/服務器端代碼的用武之地了。您需要編寫後端代碼以執行以下操作:

持續跟蹤誰在關註誰
壓縮照片,以免占據太多存儲空間
在發現功能中給每個用戶推薦照片和新賬號
好了,這就是後端代碼和前段代碼之間的區別。

順便說一下,Python不是編寫後端/服務器端代碼的唯一好選擇。還有很多其他流行的選擇,包括Node.js,它是基於JavaScript的。

如果有什麽想法或者意見的話歡迎來加扣扣:1192893289

Python那麽火,到底能用來做什麽?我們來說說Python3的主要應用