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