1. 程式人生 > >Python那麼火,到底可以用來做什麼?

Python那麼火,到底可以用來做什麼?

如果您正在考慮學習Python,或者您最近剛開始學習,您可能會問自己:“我到底可以用Python做什麼?”這是個棘手的問題,因為Python有很多用途。但是隨著時間的推移,我發現Python主要可用於一下三個方面:

如果您正在考慮學習Python,或者您最近剛開始學習,您可能會問自己:

“我到底可以用Python做什麼?”

這是個棘手的問題,因為Python有很多用途。但是隨著時間的推移,我發現Python主要可用於一下三個方面:

  • Web開發
  • 資料科學——包括機器學習、資料分析和資料視覺化
  • 指令碼編寫

我們就依次來看看吧。

Web開發

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

這些web框架幫助您用Python建立伺服器端程式碼(後端程式碼)。這些程式碼在您的伺服器上而不是在使用者裝置以及瀏覽器上(前端程式碼)執行。如果您不熟悉後端程式碼和前端程式碼之間的區別,請參閱下面腳註。

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

那是因為web框架讓構建通用後端邏輯變得更簡單了。這包括把不同的URL對映到Python程式碼塊、處理資料庫和生成使用者在瀏覽器中看到的HTML檔案。

我應該用哪個Python web框架?

DjangoFlask是兩種最流行的Python web框架。如果您剛剛開始學習,那麼可以用它們中的任何一個。

Django和Flask有什麼區別?

Gareth Dwyer有篇關於這個話題的文章寫得非常好,我在這裡引用一下:

<引用開始>

主要的對比:

  • Flask提供簡潔、靈活和細粒度控制。它很是客觀(讓您決定如何實現想要的東西)。

您應該選擇:

  • Flask,如果您專注於體驗和學習機會,或者您想對選用哪個元件有更大的控制權(例如您想使用哪個資料庫和如何與它們互動)。
  • Django,如果你專注於最終的產品。特別是如果您正在做一個簡單的應用程式(如一個新聞網站、電子商店,或者部落格)並且希望有一個直接明瞭的做法。

</引用結束>

換句話說,如果您是位初學者,Flask可能是個更好的選擇,因為用到的元件比較少。如果您想要更多的定製,那麼Flask也是個更好的選擇。

而且,根據我的資料工程師朋友Jonathan T Ho的看法,Flask更適合建立那些所謂的REST API的東西,因為它比Django更靈活。

另一方面,如果您想構建一些簡單的東西,Django會讓您更快地達到目標。

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

資料科學 —— 包括機器學習、資料分析和資料視覺化

首先,我們來回顧一下什麼是機器學習。

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

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

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



圖1

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



圖2

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

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

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

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

機器學習可實現一些演算法,能自動檢測給定輸入中的模式。

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

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

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

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

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

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

  • 推薦系統(像YouTube、Amazon和Netflix在用的)
  • 面部識別
  • 聲音識別

您可能聽說過的流行的機器學習演算法包括:

  • 神經網路
  • 深度學習
  • 支援向量機
  • 隨機森林

您可以使用任何一個上述演算法來解決我剛才解釋過的圖片標註問題。

將Python用於機器學習

有一些流行的Python機器學習庫和框架,其中最流行的兩個是scikit-learnTensorFlow

  • scikit-learn附帶了一些更流行的內建機器學習演算法。我剛才提到了其中的幾個。
  • TensorFlow更像是個低階庫,它允許您構建自定義機器學習演算法。

如果您剛開始一個機器學習專案,那麼我建議您先用scikit-learn。如果您開始遇到效率問題,那麼我建議用TensorFlow。

我應該如何學習機器學習呢?

要學習機器學習基礎知識的話,我建議選擇斯坦福加州理工學院的機器學習課程。

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

然後,我會用Kaggle來練習從課程中學到的知識。Kaggle是個網站,大家在這個網站上比試誰能對一個給定的問題構建出最佳的機器學習演算法。網站上也有給初學者用的好教程。

那麼資料分析和資料視覺化呢?

為了幫助您理解,我在這裡給您舉個簡單的例子。假設,您為一家線上銷售產品的公司工作。

那麼,作為資料分析師,您也許會畫一個類似的條形圖。



條形圖1-由Python生成

從這張圖上,我們可以看到,在某個特定的週日,對於某件產品來說,男性購買了400多件,而女性購買了大約350件。

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

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

為了搞明白哪個解釋是正確的,您可能繪製另一張圖,如下圖所示:



折線圖1-由Python生成

我們不再只顯示週日的資料,而是整整一週的資料。正如您所見,從這張圖中,我們可以看到,這種差異在不同的日子裡很一致。

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

另一方面,如果您看到是如下所示的圖呢?



折線圖2-同樣由Python生成

那麼,如何解釋出現在週日的差異呢?

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

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

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

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

用Python進行資料分析/視覺化

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

  • 它容易上手
  • 其他一些庫,如seaborn是以它為基礎的。因此,學習Matplotlib可以幫助您隨後學習其他庫。

我應該如何學習用Python進行資料分析/視覺化?

首先,您應該學習資料分析和視覺化的基礎知識。我在網上沒有找到相關的好資源。因此,最終,我在YouTube上做了相關的視訊(用Python和Matplotlib進行資料分析/視覺化的入門課程)。

我還在Pluralsight上做了相關的整個課程,如果您報名參加他們的10天免費試用,您就可以免費獲得這個課程。

這兩個我都推薦給您。

學習了資料分析和視覺化基礎知識之後,在Coursera和Khan Academy上學習統計的基礎知識也是很有幫助的。

指令碼編寫

什麼是指令碼編寫?

通常,指令碼編寫是指編寫小程式以讓簡單任務自動化。

我在這裡給您舉個來自我個人經驗的例子。

我曾在日本的一家小型初創企業工作,我們有個電郵支援系統,用來回復客戶通過電郵給我們提出的問題。

我在那裡工作的時候,我的任務是計算含有特定關鍵字的電郵數量,這樣我們才可以分析我們收到的電郵。

我們本來應該用人工統計,但是,我寫了個簡單的程式/簡單的指令碼來自動完成該任務。

事實上,那時我們是用Ruby編寫指令碼,但是,對於這樣的任務來說,Python也是個不錯的語言選擇。Python適合這種型別的任務主要是因為它有相對簡單的語法並且容易編寫。用它來寫些小程式並進行測試花不了多少時間。

那些嵌入式應用呢?

對於嵌入式應用,我不在行,但是我知道Python可以配合Rasberry Pi工作。它在那些硬體發燒友中非常流行。

那麼遊戲呢?

您可以用PyGame庫來開發遊戲,但是,它不是最流行的遊戲引擎。如果把遊戲作為興趣愛好,您可以用它來構建專案,但是,如果您真的要做遊戲開發,我個人不建議選擇它。

相反,我推薦您用Unity的C#指令碼,它是最流行的遊戲引擎之一。它允許您在很多平臺上構建遊戲,這些平臺包括:Mac、Windows、iOS和安卓。

那麼,桌面應用呢?

您可以用Python的Tkinter來開發,但是它似乎不是最流行的選擇。

相反,用Java、C#和C++等語言開發桌面應用看起來更流行。

最近,一些公司也已經開始使用JavaScript來建立桌面應用程式了。

就我個人來說,如果我要構建一個桌面應用,我會用JavaScript。它允許您複用web版本的某些程式碼(如果有的話)。

選Python 3還是Python 2?

我會推薦Python 3,因為它更現代化,並且目前它更受歡迎。

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

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

那麼,您需要為每種想支援的裝置建立前端程式碼:

  • Swift用於iOS裝置
  • Java用於安卓裝置
  • JavaScript用於web瀏覽器

每組程式碼都將在對應型別的裝置/瀏覽器上執行。這組程式碼將決定應用的佈局看上去的樣子,單擊時按鈕的外觀等等。

但是,您仍然需要儲存使用者資訊和照片的能力。除了在使用者的裝置商儲存這些資訊,您還會希望將這些資訊儲存在伺服器上,這樣,每個使用者的關注者就能看到使用者的照片。

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

  • 持續跟蹤誰在關注誰
  • 壓縮照片,以免佔據太多儲存空間
  • 在發現功能中給每個使用者推薦照片和新賬號

好了,這就是後端程式碼和前段程式碼之間的區別。

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

相關推薦

Python那麼到底可以什麼?

如果您正在考慮學習Python,或者您最近剛開始學習,您可能會問自己:“我到底可以用Python做什麼?”這是個棘手的問題,因為Python有很多用途。但是隨著時間的推移,我發現Python主要可用於一下三個方面: 如果您正在考慮學習Python,或者您最近剛開始學習,您可

Hadoop:是什麼如何工作可以什麼

Hadoop由來         在Google的早些時候,為了充分利用為大量結構化資料建立的索引,向用戶提供有用的資訊,這項技術被髮明瞭。當時沒有可以利用的解決大量資料的技術,所以他們構建了自己的平臺。Google的這項技術被用到了Nutch,一個開源的專案,後來,Had

JVM有哪些記憶體區域分別什麼的?我們就把JVM開膛破肚

JVM載入回顧 上次我解釋了JVM是如何載入class的,以及有哪些載入器。請看下圖我們在進行一次簡單的回憶! 一個類從載入到使

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

htm 51cto atp 出現 instagram 希望 pytho b2c 代碼塊 如果您正在考慮學習Python,或者您最近剛開始學習, 您可能會問自己:“我到底可以用Python做什麽?” 這是個棘手的問題,因為Python有很多用途。 但是隨著時間的推移, 我發現

IPHONE6 近來1年不會開放NFC的API給開發人員也就是僅僅能支持了如今

company its put ech tran repo article -s cati IPHONE6 近來1還不會開放NFC的API給開發人員,也就是僅僅能用來做支持了如今,可是能夠肯定的是,以後肯定會放發出來的。就像指紋傳感器一樣,如今也開放出來了。前

MD5 和的價值體現在哪裏它是什麽的?

是否 什麽 使用 pos HA products 互聯網 con www MD5 和的價值體現在哪裏,它是用來做什麽的? MD5 和是由字母和數字構成的字符串,起到了文件指紋的作用。如果兩個文件有相同的 MD5 和值,那麽,文件完全相同。您可以為每一軟件下載使用所提供的 M

SDP(13): Scala.Future - far from completion絕不能甩手掌櫃

atm 軟件 listen async execute gpo eve 並且 pri 在前面幾篇關於數據庫引擎的討論裏很多的運算函數都返回了scala.Future類型的結果,因為我以為這樣就可以很方便的實現了non-blocking效果。無論任何復雜的數據處理操作,只

Throw是一個語句拋出例外的功能

data 出錯 ati 一個 toc 代碼 eof public assert 當我們自己定義一個例外類的時候必須使其繼承excepiton或者RuntimeException。 Throw是一個語句,用來做拋出例外的功能。 而throws是表示如果下級方法中如果有例外拋出

一個同事的基於yaas平臺的一個應用可以學習SAP yaas

yaas官網:https://www.yaas.io/ 全稱:Hybris-as-a-Service 功能介紹: 支援新增wishlist,支援英德雙語 支援在account page中檢視已經新增的wishlist item,並且統計 total price

NodeJS/express-4.0實現的靜態檔案伺服器(serveStatic外掛直接支援HTTP Range請求因此可用mp4流媒體伺服器)

var express = require('express'), serveIndex = require('serve-index'), //只能列表目錄,不能下載檔案? serveStatic = require('serve-stat

微服務那麼我也該微服務嗎?

前言 近來,幾乎人人都在談論微服務。開發人員都在研究Eric Evan的著作《領域驅動設計》。團隊正在重構一體化應用,尋找限界上下文,並定義通用語言。雖然有不計其數的文章、視訊和座談可以幫助您轉換到微服務,但很少有人願意多花些時間來探討一下某個具體的應用是否應該採用微服務。

為什麼中文不能程式設計而英文卻可以?深資程式設計師告訴你答案

為什麼中文不能用來做程式設計,而英文卻可以?深資程式設計師告訴你答案 小編推薦一個學C語言/C++的學習群:948954484,入群即送C/C++全套學習資料,滿滿的乾貨! 接觸過程式設計的人都知道,不管是國內還是國外,大家都是使用英文來做程式設計的。所以有不少人很好奇,為什麼只能用英文來寫

學了Python什麼

Python是一款流行的計算機程式語言,具有簡單、易學、免費、開源、可移植、可擴充套件、可嵌入以及面向物件等特點,擁有強大的庫,簡潔的幾行程式碼即可實現強大的功能,應用範圍廣泛,可廣泛應用於以下領域: 1. Web開發 最火的Python web框架Django,支援非同步高併發的Torna

給你一臺大疆無人機你能點啥?(三)------傾斜攝影建模基礎

        在做正射影像或者傾斜建模過程中會涉及到一些攝影測量和傾斜建模有關一些知識,順便查了一些資料,然後覺得很有必要,就稍微系統羅列了一下,在最後還提供了幾個建模航線為大家作為參考,希望對大家有幫助。 一、重疊度、航線彎曲、像片旋角。 1.1航向重疊率  

Python:通過執行100萬次列印比較C和python的效能以及C和python結合解決效能問題的方法

  python作為動態語言,開發效率相當高,但如我們所知,動態語言的執行效率往往是比較低的,請看下面簡單的測試過程:  一、 C語言實現100萬次列印:   程式碼: #include<stdio.h> #include <time.h> int

大家都在學的程式語言 Python可以幹什麼?

編者按:Python因為簡單全面易用而成為近年來大熱的程式語言。但是很多人學習了這門餘元的語法和基本功能之後卻不知道Python能幹什麼以及怎麼做。Realpython.com上面的一篇文章於是把Python可以做的事情以及不適合做的事情進行了總結。更棒的是,裡面還列舉了如何

給你一臺大疆無人機你能點啥?(二)-----——傾斜攝影建模

上一期我們寫了一篇關於如何用大疆輕小型無人機制作正射影像。這一期講解如何利用大疆輕小型無人機進行傾斜攝影建模。 一、   採集資料 地面站用Altizure 這個app,很方便的!強烈推薦。 規劃採集資料區域 設定重疊率和鏡頭傾斜角度以及飛行速度 航線分東、南

ajax不可以poi的瀏覽器匯出excel可以springMvc、strust2和servlet

<script>    function exportExcel(){         location.href="excel/export";         <!--這裡不能用

Unity時間管理類一些方法的延遲呼叫

using UnityEngine; using System.Collections; using System; public class Timer {//MonoBehaviour public class TimerHelper : MonoBehavio

python什麼?

Python是一款流行的計算機程式語言,具有簡單、易學、免費、開源、可移植、可擴充套件、可嵌入以及面向物件等特點,擁有強大的庫,簡潔的幾行程式碼即可實現強大的功能,應用範圍廣泛,可廣泛應用於以下領域: 1. Web開發 最火的Python web框架Django,支援非同