[譯] Python 都能干些啥?來(lái)聊聊它的 3 個(gè)主要用途

原文請(qǐng)戳《What exactly can you do with Python? Here are Python’s 3 main applications.》

Python 大法好

如果你想學(xué) Python — 或者你最近已在學(xué)習(xí)它 — 那么你或許應(yīng)該問下自己:— 我用 Python 都能做些什么呢?
好吧据沈,這還真是個(gè)蠻難回答的問題莺奔,因?yàn)?Python 能做的事兒真是太多了啦!
過去一段時(shí)間內(nèi)遗淳,我觀察到 Python 有這么三個(gè)最主要的用途:

  • Web 開發(fā)
  • 數(shù)據(jù)科學(xué) — 包括機(jī)器學(xué)習(xí)拍柒,數(shù)據(jù)分析和數(shù)據(jù)可視化
  • 寫腳本

那我們就依次聊聊這三項(xiàng)。

Web 開發(fā)

在 Web 開發(fā)中屈暗,像 DjangoFlask 這類基于 Python 的 Web 框架最近變得非常流行拆讯。
這些框架幫助你用 Python 創(chuàng)建服務(wù)端(后臺(tái))的代碼脂男。

等等,我們?yōu)槭裁葱枰?Web 框架种呐?

這是因?yàn)橛?Web 框架能很容易的構(gòu)建起后臺(tái)開發(fā)的通用邏輯宰翅,如:將 Python 的代碼塊與 URLs 匹配,與數(shù)據(jù)庫(kù)的交互爽室,創(chuàng)建 HTML 文件供瀏覽器讀取等等汁讼。

那我應(yīng)該用哪個(gè) Python 的 Web 框架

Django 和 Flask 是 Python 最流行的兩個(gè) Web 框架。如果你是新手阔墩,我推薦你任選其一嘿架。

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

這個(gè)問題在 Gareth Dwyer 的《Flask vs. Django: Why Flask Might Be Better》上已作了非常好的回答戈擒,我引用其中的部分:

主要對(duì)比

  • Flask 是簡(jiǎn)單眶明、靈活、漸進(jìn)性的一個(gè)框架筐高,這給了開發(fā)者很大的自由度搜囱。
  • Django 則包羅萬(wàn)象了:它提供控制面板、數(shù)據(jù)庫(kù)接口柑土、ORM(object-realtional mapping) 和“開箱即用”目錄結(jié)構(gòu)蜀肘。
    譯者注:Flask vs Django 很像前端中 React/Vue vs Angular 或 Koa vs Express。Flask 輕量化稽屏、模塊化且自由靈活扮宠,Django 一應(yīng)俱全且概念較多。

你該怎么選擇:

  • Flask狐榔,如果你關(guān)注經(jīng)驗(yàn)的積累和學(xué)習(xí)的機(jī)會(huì)坛增,或者你對(duì)各組件想有更大的控制權(quán)(如數(shù)據(jù)庫(kù)和與其交互方式的選擇)。
  • Django薄腻,如果你想快速出活收捣,尤其是當(dāng)產(chǎn)品特性單一,如新聞網(wǎng)站庵楷、電子商城或者博客罢艾,并且你希望它們總是特性單一,邏輯簡(jiǎn)單尽纽。

如果你剛?cè)腴T咐蚯,F(xiàn)lask 或許是更好的選擇,因?yàn)樗旧碇挥袔讉€(gè)模塊就能跑起來(lái)弄贿。另外春锋,如果你對(duì)項(xiàng)目有更多的定制化需求,F(xiàn)lask 是更好的選擇差凹。
另一方面看疙,如果你的項(xiàng)目簡(jiǎn)單豆拨、直接,Django 能讓你快速開發(fā)能庆。
現(xiàn)在施禾,如果你準(zhǔn)備學(xué)習(xí) Django,我推薦你看 《Django for Beginners》搁胆,你也能從這兒看一些這本書的免費(fèi)章節(jié)弥搞。
Okay,讓我們進(jìn)行下一趴渠旁!

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

首先,什么是機(jī)器學(xué)習(xí)顾腊?

我認(rèn)為解釋什么是機(jī)器學(xué)習(xí)的最好方式是給出一個(gè)簡(jiǎn)單的例子粤铭。
假設(shè)你想開發(fā)一個(gè)能自動(dòng)識(shí)別圖片內(nèi)容的程序。
比如杂靶,你想讓你的程序識(shí)別出下圖(Picture 1)是一張狗??梆惯。


Picture 1

再甩出另一張圖片(Picture 2),你想讓你的程序識(shí)別出這是一張桌子吗垮。


Picture 2

你也許會(huì)說(shuō)垛吗,歐耶,我能寫出代碼來(lái)實(shí)現(xiàn)這事兒烁登。比如怯屉,可以判斷若圖片中出現(xiàn)了一些亮棕色,就可以認(rèn)為圖片中有條狗??饵沧。
或者锨络,你發(fā)明了檢測(cè)出圖片中物體邊緣的算法。然后狼牺,你就可以判斷若圖中出現(xiàn)了很多直直的物體邊緣羡儿,就可以認(rèn)為圖中有張桌子。
然而锁右,這種方法很快會(huì)變得非常棘手。如果圖中的狗不是棕毛怎么辦讶泰?如果圖中是張圓桌怎么辦咏瑟?

這時(shí)就輪到機(jī)器學(xué)習(xí)出場(chǎng)啦~
機(jī)器學(xué)習(xí)的算法能自動(dòng)提取出輸入的一系列信息的共同特征。

我們可以向機(jī)器學(xué)習(xí)算法輸入1000張狗的圖片和1000張桌子的圖片痪署。然后码泞,它從中學(xué)習(xí)??和桌子的區(qū)別。當(dāng)你再給出一張??或桌子的圖片時(shí)狼犯,它便能做出識(shí)別余寥。

我覺得這點(diǎn)非常像嬰兒的學(xué)習(xí)方式领铐。嬰兒如何學(xué)習(xí)什么是狗什么是桌子呢?一般是從一系列的生活場(chǎng)景中學(xué)習(xí)宋舷。

你一般不會(huì)對(duì)嬰兒說(shuō):“如果某物是毛茸茸的或有亮棕毛绪撵,那么它可能是狗”。
你一般會(huì)說(shuō):“看這是狗祝蝠。那是狗音诈。或者你看绎狭,這是桌子细溅,那個(gè)也是桌子”...

機(jī)器學(xué)習(xí)算法和教育嬰兒很像。

這個(gè)思路你可應(yīng)用于:

  • 推薦系統(tǒng)(像 YouTuBe, Amazon, 和 Netflix)
  • 面部識(shí)別
  • 聲音識(shí)別

和其他一系列類似的應(yīng)用儡嘶。

其中一些流行的機(jī)器學(xué)習(xí)算法包括:

  • 神經(jīng)網(wǎng)絡(luò)
  • 深度學(xué)習(xí)
  • 支持向量機(jī)
  • 隨即森林法則

你可以使用上面的任何算法來(lái)解決我前面提到過的圖片標(biāo)記問題喇聊。

Python 的機(jī)器學(xué)習(xí)

Python 有許多流行的機(jī)器學(xué)習(xí)的庫(kù)和框架。
其中最流程的兩個(gè)是 scikit-learnTensorFlow蹦狂。

  • scikit-learn 中內(nèi)置的很多流行的機(jī)器學(xué)習(xí)算法誓篱,包括我在上文提到的那些。
  • TensorFlow 相對(duì)會(huì)更底層一些鸥咖,它允許你自定義機(jī)器學(xué)習(xí)的算法燕鸽。

如果你剛開始機(jī)器學(xué)習(xí)的項(xiàng)目,我推薦你從 scikit-learn 開始啼辣。如果你開始遇到了些性能上的問題啊研,那么你要試一試 TensorFlow 了。

應(yīng)該怎么學(xué)習(xí)機(jī)器學(xué)習(xí)呢鸥拧?

機(jī)器學(xué)習(xí)的入門党远,我推薦 Stanford’sCaltech’s 這兩門課程。
溫馨提示富弦,你首先要掌握些微積分和線性代數(shù)的基礎(chǔ)知識(shí)才能很好地理解這些課程中的內(nèi)容沟娱。

然后可從 Kaggle 上學(xué)習(xí)。人們競(jìng)相為這個(gè)網(wǎng)站上放出的問題設(shè)計(jì)機(jī)器學(xué)習(xí)算法腕柜。該網(wǎng)站也有很多非常好的入門教程济似。

關(guān)于數(shù)據(jù)分析和數(shù)據(jù)可視化呢?

為了有助于理解盏缤,我們先看個(gè)簡(jiǎn)單的例子砰蠢。
假設(shè)你作為一名數(shù)據(jù)分析師在一家電商公司工作,你也許會(huì)畫出這樣一張柱狀圖:


Bar Chart 1?—?generated with Python

從這張圖我們可以看出唉铜,在周日男人買了400多件商品台舱,女人買了大概350件商品。

關(guān)于男女購(gòu)買數(shù)量的不同潭流,作為數(shù)據(jù)分析師的你可能會(huì)提出一些可能的解釋竞惋。

一個(gè)很可能的解釋是這件商品在男人中間更受歡迎柜去。另一種可能的解釋是數(shù)據(jù)樣本太小,這種差異只是偶然造成的拆宛。還有的可能的解釋是嗓奢,男人往往只在星期天出于某種原因才購(gòu)買這種商品。

為了搞清楚這些解釋哪個(gè)是正確的胰挑,你也許要畫另外一張圖表:


Line Chart 1?—?generated with Python

與上張只看到周日數(shù)據(jù)的圖表相比蔓罚,這次我們看到了一整周的數(shù)據(jù)。如你所見瞻颂,從這張圖上看豺谈,每天的購(gòu)買關(guān)系相當(dāng)一致。

從這個(gè)小小的分析中贡这,你可能會(huì)得出結(jié)論茬末,對(duì)于這種差異最令人信服的解釋是,這種產(chǎn)品在男人中比女人更受歡迎盖矫。

反轉(zhuǎn)一下丽惭,如果你看到的是這樣一張圖表呢?

Line Chart 2?—?also generated with Python

那么辈双,我們?cè)趺唇忉屩苋漳信?gòu)買量的不同责掏?

你可能會(huì)說(shuō),也許男人出于某種原因會(huì)在周日購(gòu)買更多的這種產(chǎn)品湃望』怀模或許,這僅僅是種巧合证芭。

所以瞳浦,這是一個(gè)簡(jiǎn)化的例子來(lái)說(shuō)明數(shù)據(jù)分析在現(xiàn)實(shí)世界中可能是什么樣子的。

我在谷歌和微軟時(shí)做的數(shù)據(jù)分析與該例非常相似 — 只是更復(fù)雜些罷了废士。我在谷歌使用 Python 叫潦,在微軟使用 JavaScript。

在這兩家公司我都用 SQL 從數(shù)據(jù)庫(kù)中取數(shù)官硝。然后我用 Python 和 Matplotlib(在谷歌)或者 JavaScript 和 D3(在微軟)對(duì)這些數(shù)據(jù)做分析和可視化矗蕊。

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

Python 中最流行的數(shù)據(jù)可視化庫(kù)是 Matplotlib

它是一個(gè)非常好的選擇氢架,因?yàn)椋?/p>

  • 它非常好上手傻咖。
  • 很多其他的庫(kù)(如 seaborn)都依賴它進(jìn)行構(gòu)建,所以學(xué)會(huì) Matplotlib 將有助于之后其他庫(kù)的學(xué)習(xí)达箍。

如何開始學(xué)習(xí) Python 的數(shù)據(jù)分析和可視化没龙?

你應(yīng)該先學(xué)些基本的數(shù)據(jù)分析和可視化知識(shí)铺厨。而我在網(wǎng)上想找些這樣的學(xué)習(xí)資源時(shí)缎玫,我并沒找到硬纤。所以,我就自己錄制了些這樣的視頻:

作者自己錄的用 Python 和 Matplotlib 介紹數(shù)據(jù)分析和可視化的視頻:
https://youtu.be/a9UrKTVEeZA

在學(xué)完基本的數(shù)據(jù)分析和可視化之后赃磨,再在 Coursera 或 可汗學(xué)院 上學(xué)習(xí)些統(tǒng)計(jì)學(xué)的基本知識(shí)會(huì)同樣有幫助筝家。

寫腳本

什么是腳本?

腳本通常指一些小的程序邻辉,它們被用于做一些自動(dòng)化的事情溪王。

So, 讓我舉一個(gè)我個(gè)人的例子。

我曾經(jīng)在一家日本的初創(chuàng)工作工作值骇,公司有一個(gè)郵件響應(yīng)系統(tǒng)莹菱。我們用它回復(fù)顧客發(fā)給我們的郵件。

當(dāng)時(shí)我的一部分任務(wù)是計(jì)算包含某些關(guān)鍵字的郵件數(shù)量吱瘩,這樣我們就可以對(duì)收到的郵件進(jìn)行分析道伟。

當(dāng)時(shí)我們可以人工進(jìn)行這些處理,但我寫了一個(gè)簡(jiǎn)單的程序/腳本去自動(dòng)的完成它使碾。

關(guān)于嵌入式開發(fā)呢蜜徽?

對(duì)于嵌入式開發(fā)我沒太有經(jīng)驗(yàn),但是我知道 Python 可以和 Rasberry Pi 協(xié)同工作票摇,它似乎在硬件愛好者中是非常流行的應(yīng)用拘鞋。

關(guān)于游戲呢?

你能用一款叫 PyGame 的庫(kù)去開發(fā)游戲矢门,但它比較小眾盆色。但講真,你可以玩玩它颅和,要真去開發(fā)游戲還是別用它傅事。

我會(huì)推薦你基于 C# 的 Unity 引擎,它是非常流行的游戲引擎峡扩。它允許你基于多種平臺(tái)如 Mac,Windows, iOS 和 Android 來(lái)開發(fā)游戲蹭越。

關(guān)于桌面應(yīng)用呢?

Python 的 Tkinter 是可以開發(fā)教届,但它貌似同樣不是一個(gè)好但選擇响鹃。

與之相對(duì),Java, C#, C++ 都是做這方面都好手案训。

最近买置,一些公司開始用 JavaScript ???? 來(lái)開發(fā)桌面應(yīng)用。

例如强霎,Slack’s 的桌面應(yīng)用 就是基于 Electron (譯者注:其基于 JavaScript)忿项。

個(gè)人建議,如果你想開發(fā)一個(gè)桌面應(yīng)用,我推薦用 JavaScript 轩触。這讓你假如要開發(fā) Web 版時(shí)寞酿,很多代碼都可以重用。

最后脱柱,我其實(shí)也沒有桌面應(yīng)用的開發(fā)經(jīng)驗(yàn)伐弹,所以我哪兒說(shuō)的不對(duì),請(qǐng)留言加以指正榨为。

Python 3 還是 Python 2 惨好?

我推薦的是 Python 3,因?yàn)樵谶@個(gè)時(shí)間點(diǎn)随闺,它是更現(xiàn)代且更大眾的選擇日川。


最后,作者安利了很多自己的課程矩乐,就不做翻譯啦逗鸣。。绰精。

另外撒璧,Python 也非常適合做網(wǎng)絡(luò)爬蟲,而作者沒有提及笨使。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卿樱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子硫椰,更是在濱河造成了極大的恐慌繁调,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靶草,死亡現(xiàn)場(chǎng)離奇詭異蹄胰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奕翔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門裕寨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人派继,你說(shuō)我怎么就攤上這事宾袜。” “怎么了驾窟?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵庆猫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我绅络,道長(zhǎng)月培,這世上最難降的妖魔是什么嘁字? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮杉畜,結(jié)果婚禮上拳锚,老公的妹妹穿的比我還像新娘。我一直安慰自己寻行,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布匾荆。 她就那樣靜靜地躺著拌蜘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牙丽。 梳的紋絲不亂的頭發(fā)上简卧,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音烤芦,去河邊找鬼举娩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛构罗,可吹牛的內(nèi)容都是我干的铜涉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼遂唧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芙代!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起盖彭,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纹烹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后召边,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铺呵,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年隧熙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了片挂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贞盯,死狀恐怖宴卖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情邻悬,我是刑警寧澤症昏,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站父丰,受9級(jí)特大地震影響肝谭,放射性物質(zhì)發(fā)生泄漏掘宪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一攘烛、第九天 我趴在偏房一處隱蔽的房頂上張望魏滚。 院中可真熱鬧,春花似錦坟漱、人聲如沸鼠次。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腥寇。三九已至,卻和暖如春觅捆,著一層夾襖步出監(jiān)牢的瞬間赦役,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工栅炒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掂摔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓赢赊,卻偏偏與公主長(zhǎng)得像乙漓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子释移,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容