編程也是一樣,選擇一個方向,勤學苦練,深入下去,不要輕易改變。對于 Python,主要的應(yīng)用領(lǐng)域有 5 大類,自動化測試或運維,爬蟲,數(shù)據(jù)分析,Web 開發(fā),機器學習或人工智能,這幾個領(lǐng)域的入門難度從自動化到機器學習也是從易到難,尤其是機器學習,對 Python 的要求并不高,反而是數(shù)學及算法要精通。
相信每個人都有自己的職業(yè)選擇,今天來分享下使用 Python 從事 Web 開發(fā)的完整指南,主要有以下內(nèi)容:
什么是 Web 開發(fā)?
為什么 Python 適合 Web 開發(fā)?
有哪些流行的 Python Web 框架?
有哪些用于 Web 開發(fā)的 Python 庫?
Web 開發(fā)學習路線圖
用 Python 創(chuàng)建第一個 Web 應(yīng)用程序
成為 Python Web 開發(fā)人員
1、什么是網(wǎng)站開發(fā)?
對于那些剛接觸編程的人,可能想知道到底什么是 Web 開發(fā)。盡管不可能精確地指出一個確切的術(shù)語,但是 Web 開發(fā)可以粗略地定義為構(gòu)建、創(chuàng)建和維護一個網(wǎng)站。通常,Web 開發(fā)涉及一個前端,與客戶端交互的所有內(nèi)容,以及一個后端,包含業(yè)務(wù)邏輯并與數(shù)據(jù)庫交互。前端涉及 html、css、javascript 和由此衍生出的庫及框架,如 Angular、React、Vue,可謂學無止境。后端可以有很多語言實現(xiàn),這里就是 Python 了,也有非常豐富的框架,后面會提到。
2、為什么 Python 適合 Web 開發(fā)?
一是易于學習:Python 是初學者最流行的語言,與 Java 和 C ++ 等其他語言相比,你可以編寫更少的代碼,減少出錯,從而提升效率。不僅如此,它還具有較低的進入門檻,因為它與日常語言相對更相似,可以輕松地理解代碼。
二是具有豐富的生態(tài)系統(tǒng)和庫:Python 提供了廣泛的庫工具和包,可以訪問許多預(yù)先編寫的代碼,從而縮短了應(yīng)用程序的開發(fā)時間。例如,你可以使用Numpy 和 Pandas 進行數(shù)學分析,使用 Pygal 進行圖表分析,并使用 SLQALchemy 進行可組合查詢。Python 還提供了驚人的 Web 框架,例如Django 和 Flask,后面部分深入探討。
三是快速原型制作:與其他編程語言相比,Python 可以節(jié)省大量的時間來構(gòu)建項目,你的想法可以更快地實現(xiàn),從而可以更快地獲得反饋并快速迭代。這種高效的開發(fā)使 Python 特別適合那些可以更快進入市場以獲得競爭優(yōu)勢的創(chuàng)業(yè)公司。
四是廣泛流行:Python 是世界上最受歡迎的語言之一,擁有來自世界各地的社區(qū)貢獻,幾乎所有的技術(shù)問題通過搜索引擎都可以很快找到解決方案。Python 本身也在不斷更新以提供新功能和庫,同時還提供了出色的文檔和社區(qū)支持。特別是對于新開發(fā)人員,Python 提供了廣泛的支持和框架。
3、有哪些流行的 Python Web 框架?
什么是 Web 框架,為什么如此重要?可以把 Web 框架想象成一個工具箱。一個 Web 框架是預(yù)先寫好的,由標準化的代碼組成,為編寫 Web 應(yīng)用程序服務(wù),目的是為了使開發(fā)更快、更容易,包裝和模塊的集合,使 web 應(yīng)用程序更加可靠,更容易擴展。換句話說,框架讓你不必做繁瑣的工作。
Python Web 框架僅在后端用于服務(wù)器端技術(shù),用在 URL 路由,HTTP 請求和響應(yīng),訪問數(shù)據(jù)庫以及 Web 安全。雖然不一定非要使用 Web 框架,但強烈建議您使用它,因為它可以幫助你用更少的時間開發(fā)更復(fù)雜的應(yīng)用程序。
那么有哪些流行的 Python Web 框架呢?
1、Django
為了在更短的時間內(nèi)創(chuàng)建復(fù)雜、高質(zhì)量的 web 應(yīng)用,很多 web 開發(fā)人員會首選 Django 框架。Django 提供了一個開放源代碼的高級框架,鼓勵快速開發(fā)和簡潔實用的設(shè)計,同時還提供了強大的社區(qū)支持和詳細的文檔。Django 與時俱進,根據(jù) web 開發(fā)的趨勢相對地更新其功能。Django 的特色如下:
?開放源代碼?全??蚣埽ㄒ粭l龍服務(wù),完整的解決方案)?權(quán)限認證?URL 路由?模版引擎?DRY ( don’t repeat yourself) 設(shè)計模式?ORM 映射?數(shù)據(jù)庫架構(gòu)支持,支持 PostgreSQL, MySQL , SQLite, Oracle?遵循 MVC 設(shè)計架構(gòu)
官方文檔是最好的教程,可以從零開始構(gòu)建第一個程序。Django 非常靈活,您可以與大型公司的 MVP 合作,使用 Django 的一些最大的公司是Instagram,Dropbox,Pinterest 和 Spotify。
2、Flask
Flask 被認為是一個微框架,是一個簡約的 Web 框架。它不那么“包含電池”,這意味著它缺少像 Django 這樣的全??蚣芴峁┑脑S多特性和功能,例如 Web 模板引擎,賬戶授權(quán)和身份驗證。其主要特色如下:
?一個輕量級、微框架?學習成本相對較低,入門快?支持 JinJa2 模版引擎?繼Django模板語言之后的現(xiàn)代模板語言
Flask 極簡且輕巧,這意味著您可以在編寫代碼時添加所需的擴展和庫。Flask背后的理念是,它僅提供構(gòu)建應(yīng)用程序所需的組件,因此開發(fā)人員具有很大的靈活性和控制力。Flask 還是一種流行且功能強大的 Web 框架,已被 Netflix,Linkedin 和 Uber 等大公司使用。
3、Bottle
它被普遍稱為小型微框架。它主要關(guān)注 Web API,并嘗試將所有內(nèi)容捆綁在一個文檔中,除了 Python 標準庫外,它沒有依賴項。Bottle 的特色如下:
?微框架?單一源文件最初是用于構(gòu)建api的,這意味著所有內(nèi)容都在一個源文件中。?URL路由。?模板引擎。?實用程序。?WSGI標準上的抽象。
Bottle 非常適合用于原型設(shè)計,學習 Web 框架的組織以及構(gòu)建簡單的個人應(yīng)用程序。
4、CherryPy
CherryPy 是一個內(nèi)嵌多鏈服務(wù)器的流行框架,包含服務(wù)器池、安裝框架和模塊框架。其特色是:
?開源極簡主義?一次運行多個 htpp 服務(wù)器?強大的配置和靈活的插件系統(tǒng)?內(nèi)建對概要分析,覆蓋和測試的支持
5、Pyramid
Pyramid 是 Pylon 項目的一部分;它是 Python 語言中最靈活的框架之一。該框架允許開發(fā)人員選擇任何東西如:DBMS,URL 結(jié)構(gòu),模板樣式等等。
6、Web2Py
Web2Py 允許調(diào)試器和代碼編輯器通過部署工具來編輯代碼和調(diào)試代碼。它使開發(fā)人員能夠通過 Web 瀏覽器開發(fā),修改,部署和管理Web應(yīng)用程序。
每年都可能會有新的框架、或已有框架推出新特性,作為開發(fā)者應(yīng)該使用哪個?
到目前為止,Django 是最受歡迎的框架,其次是 Flask,如果你不知道怎么選就從這兩者中選擇一個吧。
你可能還會問:我應(yīng)該選擇 Django 還是 Flask?答案是,這取決于 Web 開發(fā)人員的技能水平。如果很有經(jīng)驗,請考慮使用更多的“準系統(tǒng)”來開發(fā)程序。而如果您是初級開發(fā)人員,則最好使用提供更多支持(例如 Django)的框架。
另外,問問自己,是希望使用基礎(chǔ)代碼庫進行構(gòu)建還是希望靈活地構(gòu)建代碼庫的主干?如果是前者請使用 Django;如果是后者,請選擇 Flask。歸根結(jié)底,他們倆都可以實現(xiàn)相同的功能,更重要的是開始編碼,而不是為哪種框架更好而煩惱。
4、有哪些用于 Web 開發(fā)的 Python 庫?
如果需要 Web 爬蟲為你的應(yīng)用程序提取數(shù)據(jù),Scrapy 非常適合。它是用于抓取,數(shù)據(jù)挖掘,自動化測試等的廣泛使用的庫。
Zappa 是一個功能強大的庫,用于在AWS Lambda 上開發(fā)無服務(wù)器應(yīng)用程序。
Requests 庫可可以輕松發(fā)送 HTTP 請求,用于與應(yīng)用程序進行通信,獲取 HTML 頁面數(shù)據(jù)。
另一個有用的庫是 Dash,它可以幫助開發(fā)與數(shù)據(jù)可視化有關(guān)的 Web 應(yīng)用程序。它基于 Flask 構(gòu)建,提供諸如圖表,圖形,儀表板等功能。
5、Web 開發(fā)學習路線圖
步驟 1: 基礎(chǔ)知識儲備
首先,前端的三個最基本的東西 HTML 5、CSS 3 和 JavaScript(ES6)是必須要學好的。這其中有很多很多的技術(shù),比如,CSS 3 引申出來的 Canvas(位圖)、SVG(矢量圖) 和 WebGL(3D 圖),以及 CSS 的各種圖形變換可以讓你做出非常豐富的渲染效果和動畫效果。ES6 簡直就是把 JavaScript 帶到了一個新的臺階,JavaScript 語言的強大,大大釋放了前端開發(fā)人員的生產(chǎn)力,讓前端得以開發(fā)更為復(fù)雜的代碼和程序
?JavaScript 的核心原理?瀏覽器的工作原理?HTTP 協(xié)議:HTTP/2,短連接、長連接、Stream連接、WebSocket
步驟 2: 前端框架及性能調(diào)優(yōu)
目前而言,前端社區(qū)有三大框架 Angular.js、React.js 和 Vue.js。React 和 Vue 更為強大,新手可以從 Vue 開始學習。
前端性能優(yōu)化方面可以看以下幾本書籍:
Web Performance in Action ,是一本很不錯的書,其中有 CSS、圖片、字體、JavaScript 性能調(diào)優(yōu)等。
Designing for Performance ,講了很多網(wǎng)頁優(yōu)化的技術(shù)和相關(guān)的工具,可以讓你對整體網(wǎng)頁性能優(yōu)化有所了解。
High Performance JavaScript 讓你了解如何提升各方面的性能,包括代碼的加載、運行、DOM 交互、頁面生存周期等。雅虎的前端工程師尼古拉斯·扎卡斯(Nicholas C. Zakas)和其他五位 JavaScript 專家介紹了頁面代碼加載的最佳方法和編程技巧,來幫助你編寫更為高效和快速的代碼。
步驟 3:后端技能學習
首先是服務(wù)器相關(guān)的協(xié)議,諸如 WSGI,ASGI 協(xié)議的了解,其次前面提到的Python 相關(guān)的 Web 框架,還包括一些 API 框架,如:Django REST Framework、FastAPI、Flask REST frameworks 等等。
此外還要學習數(shù)據(jù)庫相關(guān)的知識,SQL 語言,數(shù)據(jù)庫相關(guān)的查詢優(yōu)化也是不可或缺的。
最后服務(wù)端部署的相關(guān)技術(shù)學習,包括 nginx、uwsgi、gunicorn、https 協(xié)議等。
6、 用 Python 創(chuàng)建第一個 Web 應(yīng)用程序
使用 Flask 創(chuàng)建第一個 HelloWorld 的 Web 應(yīng)用程序,首先安裝 Flask。
pip install flask
創(chuàng)建一個 hello.py 文件,寫入以下內(nèi)容:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
代碼很簡單,就不解釋了,執(zhí)行python hello.py,然后訪問 http://locahost:5000/, 就可以看到一個顯示 “Hello World!” 字樣的網(wǎng)頁。
7、選擇成一個 Python Web 開發(fā)人員
恭喜!您正在逐步成為一名熟練使用 Python 的 Web 開發(fā)人員。現(xiàn)在應(yīng)該對如何用 Python 進行 Web 開發(fā)有了一個很好的了解,這種了解,將在 Web 開發(fā)學習的道路上不迷茫。