Python雖好,但請不要盲目將它用于每一個項(xiàng)目!
譯文【51CTO.com快譯】
最近我在Reddit上討論了為什么有人會選擇使用Python而不是其他編程語言。討論很激烈,于是我決定寫一篇文章。
首先,不妨講講我對Python的看法。這是我喜歡的一種編程語言,可以用于眾多應(yīng)用,不過我同意所有語言都有其缺點(diǎn)。我的確認(rèn)為Python是適合專業(yè)人員使用的一種優(yōu)秀語言,但也適合初學(xué)者探索迷人的編程世界。
話雖如此,我會在每個項(xiàng)目中使用Python嗎?可能不會。但是Python在一些方面很擅長,我想重點(diǎn)介紹這方面并解釋原因。
- API開發(fā)
- 數(shù)據(jù)科學(xué)/人工智能
- 腳本編寫
API開發(fā)
有一些出色的API開發(fā)框架可與Python結(jié)合使用,其中兩個是開發(fā)社區(qū)最喜歡的框架:Django和Flask。
圍繞API開發(fā)的討論立即進(jìn)入了Web框架的方向。為什么?這么說吧,如果你想致力于為API編寫代碼,就不該編寫自己的Web服務(wù)器或框架。
一些人也主張將Python用于Web開發(fā),不過我不喜歡將那些框架用于前端,我更喜歡使用React、VueJS或Ember構(gòu)建前端。
如果你開始使用Python開發(fā)API,很可能最終會使用Django或Flask。所以你可能會問:我該使用哪一個?
Django VS Flask
這兩種框架都很棒,而且適用于大多數(shù)情況。然而,它們遵循不同的理念。一些人更喜歡其中一種,兩邊都有充分的理由。由于這兩種框架本質(zhì)上大不相同,因此我僅介紹兩者的大體區(qū)別,不過你應(yīng)該詳細(xì)了解,才能確定哪種框架最適合你和你的項(xiàng)目。
理念:
- Flask是一種簡約的框架。它提供了簡單性、靈活性和細(xì)粒度控制。它是非固執(zhí)己見的(你可以用它來做你想做的任何事情)。
- 相反,Django是一個綜合性框架。你可以直接為應(yīng)用程序獲得庫、管理面板、數(shù)據(jù)庫界面、ORM甚至可靠的目錄結(jié)構(gòu)。
如果你想了解更多的相關(guān)內(nèi)容,請參閱此文:https://testdriven.io/blog/django-vs-flask/。
數(shù)據(jù)科學(xué)/人工智能
無論何時想處理數(shù)據(jù)(比如數(shù)據(jù)抓取、數(shù)據(jù)分析、可視化、機(jī)器學(xué)習(xí)或AI),Python都是最好的朋友。這每一項(xiàng)任務(wù)都有許多重要的庫,它們是出色的庫,在研究環(huán)境和生產(chǎn)環(huán)境中使用率很高。
我不會詳細(xì)介紹這些庫,但想提及幾個庫:Pandas、Numpy、Matplotlib、Seaborn、Tensorflow、Pytorch、scikit-learn、Keras、NLTK和OpenCV。
由于這些庫,你可以構(gòu)建涉及幾乎任何數(shù)據(jù)科學(xué)或AI主題的生產(chǎn)就緒的項(xiàng)目。雖然將Python用于其中一些應(yīng)用存在一些缺點(diǎn)(比如性能),但在許多情況下,Python會是不錯的選擇。
我們在談?wù)撃囊环N項(xiàng)目?
通常,Python在數(shù)據(jù)科學(xué)和AI有許多應(yīng)用。我在這里提及使用Python的幾個常見項(xiàng)目:
- 時間序列分析
- 銷售預(yù)測
- 語言處理
- 情緒分析
- 推薦系統(tǒng)(比如音樂和視頻等)
- 分類
- 計(jì)算機(jī)視覺
- 自動駕駛汽車
腳本
腳本通常指旨在自動執(zhí)行簡單任務(wù)的小程序(通常通過命令行來執(zhí)行)。
下面舉幾個例子表明我自己編寫的腳本,這些腳本使我的日常工作流程實(shí)現(xiàn)自動化:
- 我的博客:我使用Evernote收集在網(wǎng)上看到的所有內(nèi)容,還撰寫帖子。但是需要發(fā)布時,我記下那些筆記并將其作為草稿上傳到我的博客中。這個過程在Python上自動進(jìn)行:每當(dāng)我將筆記標(biāo)記為“準(zhǔn)備發(fā)布”,我會運(yùn)行Python腳本:將筆記、格式和草稿拷貝到我的博客系統(tǒng)中。當(dāng)然,實(shí)際發(fā)布之前我總需要進(jìn)行一番手動修改(主要是由于Evernote奇怪的HTML輸出)。
- 備份:我喜歡在云端備份資料,但我也在外部硬盤中留一份副本。我通常加密放到云端的所有內(nèi)容(Evernote除外,它不允許我這么做)。但當(dāng)我將備份內(nèi)容放到硬盤時,會使用硬盤加密,我不想對其進(jìn)行雙重加密。當(dāng)我想把數(shù)據(jù)備份到硬盤時,會運(yùn)行一個python腳本,該腳本解密數(shù)據(jù),然后將數(shù)據(jù)移到硬盤。
結(jié)論
Python是一種用途很廣泛的編程語言,由于其社區(qū)和庫,你幾乎可以用它來做想做的任何事情,不過有時你不該使用它。沒有哪種語言一應(yīng)俱全:它們都有優(yōu)缺點(diǎn),Python也不例外。
話雖如此,我確實(shí)認(rèn)為Python很棒;如果你很好奇,可以用它構(gòu)建從游戲到嵌入式系統(tǒng)的各種應(yīng)用。當(dāng)然,那些可能不是生產(chǎn)就緒的項(xiàng)目。
原文標(biāo)題:Python is great, but stop using it for every damn project
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】