這個問題很差回答,由於Python有不少用途。html
可是隨着時間,我發現有Python主要有如下三大主要應用:前端
Web開發python
數據科學:包括機器學習、數據分析和數據可視化算法
腳本數據庫
本文將依次介紹。小程序
做者:YK Sugi後端
編譯:Mika瀏覽器
來源:CDA數據分析師(ID:cdacdacda)服務器
01 Web開發網絡
Django和Flask等基於Python的Web框架最近在Web開發中很是流行。
這些Web框架能夠幫助你用Python編寫服務器端代碼(後端代碼)。這是在你的額服務器上運行的代碼,而不是運行在用戶設備和瀏覽器的代碼(前端代碼)。
1. 爲何須要Web框架
由於用Web框架能夠更容易地構建通用後端邏輯。這包括將不一樣的URL映射到Python代碼塊,處理數據庫以及生成用戶在瀏覽器中看到的HTML文件。
2. 應該使用哪一種Python Web框架
Django和Flask是最流行的兩種Python Web框架。若是你剛剛入門,我建議使用其中一種。
3. Django和Flask有什麼區別
Gareth Dwyer 關於這個問題有一篇出色的文章,在這裏我引用幾段:
主要區別
Flask:可以實現簡單、靈活和細緻的控制。並能讓你本身決定實現方式。
Django:提供了全面的體驗:你能夠得到管理面板、數據庫接口、ORM(對象關係映射)以及開箱即用的應用程序和項目的目錄結構。
如何選擇
Flask:若是你關注的是經驗和學習的機會,或者你想更多地控制使用哪些組件,好比你想使用哪些數據庫以及如何與其進行交互。
Django:若是你關注最終產品,或者你正在研究一個簡單的應用,好比新聞網站、網店或博客,而且你但願有單一實現的方式。
換句話說,若是你是初學者,Flask多是更好的選擇,由於它要掌握的組件更少。此外,若是你想要更多的定製,那就選Flask。
根據個人數據工程師朋友Jonathan T Ho的說法,因爲Flask 的靈活性,在建立REST API時,Flask 比Django 更適合。
另外一方面,若是你想直接構建一些東西,Django可能會讓你更快實現。
02 數據科學
數據科學,這裏包括機器學習,數據分析和數據可視化。
1. 機器學習是什麼
假設你想開發一個可以自動檢測圖片內容的程序。給出圖1,你但願程序識別這是一隻狗。
▲圖1
給出圖2,但願程序能識別這是一張桌子。
▲圖2
你可能會說,我能夠寫一些代碼來作到這點。例如,若是圖片中有不少淺棕色像素,那麼能夠識別是狗。
或者能夠檢測圖片中的邊緣,若是有不少直的邊緣,那麼就是桌子。
但這種方法很快就很差用了。若是圖片中的狗不是棕色毛的怎麼辦?若是圖片只顯示桌子的圓形部分怎麼辦?
這裏就須要用到機器學習了。
機器學習經過實現算法,該算法可以自動檢測輸入中的模式。
例如,你將1000張狗的圖片和1000張桌子的圖片輸入給機器學習算法,讓它掌握狗和桌子間的區別。那麼當你給出新的圖片讓它識別是狗仍是桌子時,它就可以進行判斷。
這有點相似孩子學習新事物的方式。孩子是如何學習認知狗或桌子的呢?就是經過大量的例子。
你不會明確告訴孩子:「若是某個毛茸茸的東西有淺棕色的毛髮,那麼就多是狗。」
你會說,「這是狗,這也是狗。而這是桌子,那個也是桌子。「
機器學習算法的方式大體相同。
咱們能夠將相同的想法應用於:
推薦系統:好比YouTube,亞馬遜和Netflix
人臉識別
語音識別
以及其餘應用。
你聽過的熱門機器學習算法包括:
神經網絡
深度學習
支持向量機
隨機森林
你可使用上述任何算法來解決前面提到的圖片標籤問題。
2. 將Python用於機器學習
有一些熱門的機器學習庫和Python框架。其中兩個最熱門的是scikit-learn和TensorFlow。
scikit-learn帶有一些內置的熱門機器學習算法。
TensorFlow是一個低級庫,能讓你建立自定義機器學習算法。
若是你剛開始進行機器學習項目,我會建議你先從scikit-learn開始。若是你開始遇到效率問題,那麼可使用TensorFlow。
3. 數據分析和數據可視化
假設你在一家在線銷售產品的公司工做。做爲數據分析師,你會繪製這樣的條形圖。
▲條形圖1 - 用Python生成
從這張圖中能夠看到在某個週日,男性用戶購買了400多件產品,女性用戶購買了350件產品。
做爲數據分析師,對此你會提出一些可能的解釋。明顯的解釋是,該產品在男性用戶中更受歡迎。另外一種是樣本量過小,而這種差別是偶然的。還可能呢是因爲某種緣由,男性每每在週日才購買該產品。
爲了理解哪一種解釋是正確的,你能夠繪製另外一個圖。
▲折線圖1 - 用Python生成
不止看週日的數據,還要看到一週的數據。從這張圖表中能夠看出,在不一樣的日子裏這種差別比較一致。
從這個分析中你會得出結論:這種產品在男性中比在女性中更受歡迎。
但若是你看到像這樣的圖表呢?
▲折線圖2 - 用Python生成
那麼,怎麼解釋週日的差別呢?
你可能會說,也許出於某種緣由男性只在週日纔會更多地購買這款產品。或許這只是巧合。
我在谷歌和微軟工做時所作的數據分析工做與這個例子很是類似,只是更復雜一些。在谷歌時我使用Python進行分析,而我在微軟使用JavaScript。
在這兩家公司我都使用SQL從數據庫中提取數據。而後,我用Python和Matplotlib(在谷歌)或JavaScript和D3.js(在微軟)來可視化和分析這些數據。
4. 使用Python進行數據分析/可視化
進行數據可視化時,Matplotlib是很是熱門的庫。
Matplotlib很棒,由於:
容易上手
seaborn等庫是基於它的,學習Matplotlib能夠幫助你之後學習其餘庫。
5. 如何用Python學習數據分析/可視化
你首先應該瞭解數據分析和可視化的基礎知識。在學習了數據分析和可視化的基礎知識以後,學習統計學基礎知識也將會頗有幫助。
03 腳本
什麼是腳本?
腳本一般是指編寫可以自動執行簡單任務的小程序。
我曾經在日本的一家小型創業公司工做,公司有郵件支持系統,這用來回復客戶經過郵件發送給咱們的問題。
在那兒工做時,個人任務是計算包含關鍵字的郵件數量,以便分析咱們收到的電子郵件。這能夠手動完成,但我寫了一個簡單的腳原本自動執行此任務。
當時咱們使用了Ruby,但對於這類任務Python也是不錯的選擇。Python適合這類任務,由於它語法簡單,易於編寫,並且進行測試也很快。
04 其餘用途
1. 嵌入式應用
我不是這方面的專家,但我知道Python能夠與Rasberry Pi一塊兒用,在硬件愛好者中很流行。
2. 遊戲開發
你能夠用PyGame來開發遊戲,但這並非最受歡迎的遊戲引擎。你能夠用它來開發業餘愛好項目,但若是你對遊戲開發很認真,建議不要選它。
我建議使用Unity的C#,這是最受歡迎的遊戲引擎之一。它能讓你爲許多平臺開發遊戲,包括Mac、Windows、iOS和Android。
3. 桌面應用
你能夠用Python的Tkinter,但這並非最熱門的選擇。Java,C#和C ++等語言彷佛更受歡迎。
最近,一些公司也開始使用JavaScript來開發桌面應用程序。例如,Slack的桌面應用是Electron構建的。它能讓你用JavaScript構建桌面應用程序。
就我的而言,若是我要開發桌面應用,我會選擇使用JavaScript。它能讓你從新使用網絡版本的一些代碼。
固然,我並非桌面應用的專家,因此若是你有不一樣的見解,評論中告訴我。
4. Python 3仍是Python 2
我會推薦Python 3,由於它更新並且更受歡迎。
5. 後端代碼與前端代碼的區別
假設你想開發相似Instagram的產品,那麼你須要爲想要支持類型的設備建立前端代碼。
你可能會用到:
面向iOS端的Swift
面向Android的Java
面向Web瀏覽器的JavaScript
每組代碼將在每種類型的設備上運行。這類代碼將決定應用的佈局樣式,點擊按鍵的樣式等。
可是,您還須要存儲用戶信息和照片的功能。你要將它們存儲在服務器上,而不只僅存儲在用戶的設備上,以便每一個用戶的關注者均可以查看其照片。
這時須要用到後端代碼/服務器端代碼。你須要編寫後端代碼來執行如下操做:
記錄關注狀況
壓縮照片,從而不佔用太多存儲空間
在發現功能中向每一個用戶推薦照片和新賬戶
這是後端代碼和前端代碼之間的區別。
順便說一下,Python不是編寫後端代碼的惟一選擇,還有基於JavaScript的Node.js等選擇。
原文連接:
https://medium.freecodecamp.org/what-can-you-do-with-python-the-3-main-applications-518db9a68a78