你到底可以用Python做什么?以下是Python的3個(gè)主要應(yīng)用程序。

導(dǎo)讀:如果你想學(xué)Python,或者你剛開始學(xué)習(xí)Python,那么你可能會(huì)問:“我能用Python做什么?”

這個(gè)問題不好回答,因?yàn)镻ython有很多用途。

但是隨著時(shí)間,我發(fā)現(xiàn)有Python主要有以下三大主要應(yīng)用:

  • Web開發(fā)

  • 數(shù)據(jù)科學(xué):包括機(jī)器學(xué)習(xí)、數(shù)據(jù)分析和數(shù)據(jù)可視化

  • 腳本

本文將依次介紹。

01 Web開發(fā)

Django和Flask等基于Python的Web框架最近在Web開發(fā)中非常流行。

這些Web框架可以幫助你用Python編寫服務(wù)器端代碼(后端代碼)。這是在你的額服務(wù)器上運(yùn)行的代碼,而不是運(yùn)行在用戶設(shè)備和瀏覽器的代碼(前端代碼)。

1. 為什么需要Web框架

因?yàn)橛肳eb框架可以更容易地構(gòu)建通用后端邏輯。這包括將不同的URL映射到Python代碼塊,處理數(shù)據(jù)庫以及生成用戶在瀏覽器中看到的HTML文件。

2. 應(yīng)該使用哪種Python Web框架

Django和Flask是最流行的兩種Python Web框架。如果你剛剛?cè)腴T,我建議使用其中一種。

3. Django和Flask有什么區(qū)別

Gareth Dwyer 關(guān)于這個(gè)問題有一篇出色的文章,在這里我引用幾段:

主要區(qū)別

Flask:能夠?qū)崿F(xiàn)簡(jiǎn)單、靈活和細(xì)致的控制。并能讓你自己決定實(shí)現(xiàn)方式。

Django:提供了全面的體驗(yàn):你可以獲得管理面板、數(shù)據(jù)庫接口、ORM(對(duì)象關(guān)系映射)以及開箱即用的應(yīng)用程序和項(xiàng)目的目錄結(jié)構(gòu)。

如何選擇

Flask:如果你關(guān)注的是經(jīng)驗(yàn)和學(xué)習(xí)的機(jī)會(huì),或者你想更多地控制使用哪些組件,比如你想使用哪些數(shù)據(jù)庫以及如何與其進(jìn)行交互。

Django:如果你關(guān)注最終產(chǎn)品,或者你正在研究一個(gè)簡(jiǎn)單的應(yīng)用,比如新聞網(wǎng)站、網(wǎng)店或博客,并且你希望有單一實(shí)現(xiàn)的方式。

換句話說,如果你是初學(xué)者,F(xiàn)lask可能是更好的選擇,因?yàn)樗莆盏慕M件更少。此外,如果你想要更多的定制,那就選Flask。

根據(jù)我的數(shù)據(jù)工程師朋友Jonathan T Ho的說法,由于Flask 的靈活性,在創(chuàng)建REST API時(shí),F(xiàn)lask 比Django 更適合。

另一方面,如果你想直接構(gòu)建一些東西,Django可能會(huì)讓你更快實(shí)現(xiàn)。

02 數(shù)據(jù)科學(xué)

數(shù)據(jù)科學(xué),這里包括機(jī)器學(xué)習(xí),數(shù)據(jù)分析和數(shù)據(jù)可視化。

1. 機(jī)器學(xué)習(xí)是什么

假設(shè)你想開發(fā)一個(gè)能夠自動(dòng)檢測(cè)圖片內(nèi)容的程序。給出圖1,你希望程序識(shí)別這是一只狗。

▲圖1

給出圖2,希望程序能識(shí)別這是一張桌子。

▲圖2

你可能會(huì)說,我可以寫一些代碼來做到這點(diǎn)。例如,如果圖片中有很多淺棕色像素,那么可以識(shí)別是狗。

或者可以檢測(cè)圖片中的邊緣,如果有很多直的邊緣,那么就是桌子。

但這種方法很快就不好用了。如果圖片中的狗不是棕色毛的怎么辦?如果圖片只顯示桌子的圓形部分怎么辦?

這里就需要用到機(jī)器學(xué)習(xí)了。

機(jī)器學(xué)習(xí)通過實(shí)現(xiàn)算法,該算法能夠自動(dòng)檢測(cè)輸入中的模式。

例如,你將1000張狗的圖片和1000張桌子的圖片輸入給機(jī)器學(xué)習(xí)算法,讓它掌握狗和桌子間的區(qū)別。那么當(dāng)你給出新的圖片讓它識(shí)別是狗還是桌子時(shí),它就能夠進(jìn)行判斷。

這有點(diǎn)類似孩子學(xué)習(xí)新事物的方式。孩子是如何學(xué)習(xí)認(rèn)知狗或桌子的呢?就是通過大量的例子。

你不會(huì)明確告訴孩子:“如果某個(gè)毛茸茸的東西有淺棕色的毛發(fā),那么就可能是狗。”

你會(huì)說,“這是狗,這也是狗。而這是桌子,那個(gè)也是桌子?!?/p>

機(jī)器學(xué)習(xí)算法的方式大致相同。

我們可以將相同的想法應(yīng)用于:

  • 推薦系統(tǒng):比如YouTube,亞馬遜和Netflix

  • 人臉識(shí)別

  • 語音識(shí)別

以及其他應(yīng)用。

你聽過的熱門機(jī)器學(xué)習(xí)算法包括:

  • 神經(jīng)網(wǎng)絡(luò)

  • 深度學(xué)習(xí)

  • 支持向量機(jī)

  • 隨機(jī)森林

你可以使用上述任何算法來解決前面提到的圖片標(biāo)簽問題。

2. 將Python用于機(jī)器學(xué)習(xí)

有一些熱門的機(jī)器學(xué)習(xí)庫和Python框架。其中兩個(gè)最熱門的是scikit-learn和TensorFlow。

  • scikit-learn帶有一些內(nèi)置的熱門機(jī)器學(xué)習(xí)算法。

  • TensorFlow是一個(gè)低級(jí)庫,能讓你創(chuàng)建自定義機(jī)器學(xué)習(xí)算法。

如果你剛開始進(jìn)行機(jī)器學(xué)習(xí)項(xiàng)目,我會(huì)建議你先從scikit-learn開始。如果你開始遇到效率問題,那么可以使用TensorFlow。

3. 數(shù)據(jù)分析和數(shù)據(jù)可視化

假設(shè)你在一家在線銷售產(chǎn)品的公司工作。作為數(shù)據(jù)分析師,你會(huì)繪制這樣的條形圖。

image

▲條形圖1 - 用Python生成

從這張圖中可以看到在某個(gè)周日,男性用戶購買了400多件產(chǎn)品,女性用戶購買了350件產(chǎn)品。

作為數(shù)據(jù)分析師,對(duì)此你會(huì)提出一些可能的解釋。明顯的解釋是,該產(chǎn)品在男性用戶中更受歡迎。另一種是樣本量太小,而這種差異是偶然的。還可能呢是由于某種原因,男性往往在周日才購買該產(chǎn)品。

為了理解哪種解釋是正確的,你可以繪制另一個(gè)圖。

▲折線圖1 - 用Python生成

不止看周日的數(shù)據(jù),還要看到一周的數(shù)據(jù)。從這張圖表中可以看出,在不同的日子里這種差異比較一致。

從這個(gè)分析中你會(huì)得出結(jié)論:這種產(chǎn)品在男性中比在女性中更受歡迎。

但如果你看到像這樣的圖表呢?

▲折線圖2 - 用Python生成

那么,怎么解釋周日的差異呢?

你可能會(huì)說,也許出于某種原因男性只在周日才會(huì)更多地購買這款產(chǎn)品?;蛟S這只是巧合。

我在谷歌和微軟工作時(shí)所做的數(shù)據(jù)分析工作與這個(gè)例子非常相似,只是更復(fù)雜一些。在谷歌時(shí)我使用Python進(jìn)行分析,而我在微軟使用JavaScript。

在這兩家公司我都使用SQL從數(shù)據(jù)庫中提取數(shù)據(jù)。然后,我用Python和Matplotlib(在谷歌)或JavaScript和D3.js(在微軟)來可視化和分析這些數(shù)據(jù)。

使用Python進(jìn)行數(shù)據(jù)分析/可視化

最流行的數(shù)據(jù)可視化庫之一是Matplotlib

這是一個(gè)很好的入門庫,因?yàn)椋?/p>

  • 它很容易上手
  • 其他一些庫,如seaborn就是基于它的。因此,學(xué)習(xí) Matplotlib 將幫助您以后學(xué)習(xí)這些其他庫。

我應(yīng)該如何使用Python學(xué)習(xí)數(shù)據(jù)分析/可視化?

您應(yīng)該首先學(xué)習(xí)數(shù)據(jù)分析和可視化的基礎(chǔ)知識(shí)。當(dāng)我在網(wǎng)上尋找好的資源時(shí),我找不到任何資源。所以,我最終制作了一個(gè)關(guān)于這個(gè)主題的YouTube視頻:

我最終還在Pluralsight上制作了一個(gè)關(guān)于這個(gè)主題的完整課程,您可以通過注冊(cè)他們的10天免費(fèi)試用版免費(fèi)獲得。

我會(huì)推薦他們兩個(gè)。

在學(xué)習(xí)了數(shù)據(jù)分析和可視化的基礎(chǔ)知識(shí)之后,從Coursera和Khan Academy等網(wǎng)站上學(xué)習(xí)統(tǒng)計(jì)學(xué)的基礎(chǔ)知識(shí)也將有所幫助。

腳本

什么是腳本?

腳本通常是指編寫旨在自動(dòng)執(zhí)行簡(jiǎn)單任務(wù)的小程序。

所以,讓我從我的個(gè)人經(jīng)歷中給你一個(gè)例子。

我曾經(jīng)在日本的一家小型創(chuàng)業(yè)公司工作,那里有一個(gè)電子郵件支持系統(tǒng)。這是我們回復(fù)客戶通過電子郵件發(fā)送給我們的問題的系統(tǒng)。

當(dāng)我在那里工作時(shí),我的任務(wù)是計(jì)算包含某些關(guān)鍵字的電子郵件數(shù)量,以便我們可以分析收到的電子郵件。

我們本可以手動(dòng)完成,但相反,我編寫了一個(gè)簡(jiǎn)單的程序/簡(jiǎn)單的腳本來自動(dòng)執(zhí)行此任務(wù)。

實(shí)際上,我們當(dāng)時(shí)使用Ruby來做這件事,但Python也是這種任務(wù)的好語言。Python適合這種類型的任務(wù),主要是因?yàn)樗哂邢鄬?duì)簡(jiǎn)單的語法并且易于編寫。用它寫一些小東西并進(jìn)行測(cè)試也很快。

嵌入式應(yīng)用程序呢?

我不是嵌入式應(yīng)用程序的專家,但我知道Python可以與Rasberry Pi一起使用。它似乎是硬件愛好者中流行的應(yīng)用程序。

那么游戲呢?

你可以使用名為PyGame的庫來開發(fā)游戲,但它不是最受歡迎的游戲引擎。你可以用它來構(gòu)建一個(gè)業(yè)余愛好項(xiàng)目,但如果你認(rèn)真對(duì)待游戲開發(fā),我個(gè)人不會(huì)選擇它。

相反,我建議從使用C#的Unity開始,這是最受歡迎的游戲引擎之一。它允許您為許多平臺(tái)構(gòu)建游戲,包括Mac,Windows,iOS和Android。

Python 3 還是 Python 2?

我會(huì)推薦Python 3,因?yàn)樗F(xiàn)代,在這一點(diǎn)上它是一個(gè)更受歡迎的選擇。

腳注:關(guān)于后端代碼與前端代碼的說明(以防您不熟悉這些術(shù)語):

假設(shè)你想做一些像Instagram這樣的東西。

然后,您需要為要支持的每種類型的設(shè)備創(chuàng)建前端代碼。

例如,您可以使用:

  • Swift for iOS
  • Java for Android
  • 用于 Web 瀏覽器的 JavaScript

每組代碼將在每種類型的設(shè)備/瀏覽器上運(yùn)行。這將是一組代碼,用于確定應(yīng)用程序的布局將是什么樣子,單擊按鈕時(shí)按鈕的外觀等。

但是,您仍然需要能夠存儲(chǔ)用戶的信息和照片。您需要將它們存儲(chǔ)在服務(wù)器上,而不僅僅是存儲(chǔ)在用戶的設(shè)備上,以便每個(gè)用戶的關(guān)注者都可以查看他/她的照片。

這是后端代碼/服務(wù)器端代碼的用武之地。您需要編寫一些后端代碼來執(zhí)行以下操作:

  • 跟蹤誰在關(guān)注誰
  • 壓縮照片,使其不會(huì)占用太多存儲(chǔ)空間
  • 發(fā)現(xiàn)功能中向每個(gè)用戶推薦照片和新帳戶

所以,這就是后端代碼和前端代碼之間的區(qū)別。

順便說一句,Python并不是編寫后端/服務(wù)器端代碼的唯一好選擇。還有許多其他流行的選擇,包括基于JavaScript的Node.js。

無論如何,非常感謝您閱讀我的文章!有任何問題可以后臺(tái)私信我,有問必答!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容