在國內,豆瓣從壹開始就把Python作為web開發的基礎語言,知乎的整個架構也是基於Python語言,使得web開發在國內發展的非常好。
雖然Python目前還不是Web開發的首選,但它壹直占據著不可忽視的地位。Python中有各種各樣的Web框架,無論是簡單自由搭配的微框架,還是功能齊全的大型MVC框架,在需要敏捷開發的Web項目中也非常有優勢。Python提供的大規模Web服務被廣泛使用(或已經被廣泛使用),包括知乎、豆瓣、Dropbox等網站。再加上Python本身的“膠水”特性,在需要大規模性能級計算的時候,很容易集成其他語言,同時保留了Web開發的輕便和快捷。
此外,Python中還有大量“開箱即用”的模塊,用於連接其他各種網站和其他相關功能。如果妳想開發壹個微信微信官方賬號相關的功能,微信-sdk/weixin-python之類的包可以讓妳幾乎完全不用去關註文檔中提到的各種服務器交互的細節,不用去關註功能實現。
目前,在中國Python web開發中有兩種技術棧:
(1)姜戈
Django是壹個先進的敏捷web開發框架。如果妳學會了,妳可以很快建立壹個網站。當然,基於ruby的ruby on Rails顯然比網站的速度要快,但是Django有性能優秀的優勢,更適合國內網站的應用場景。國外著名的圖片社區Pinterest早期也是基於Django開發的,遭受了用戶快速增長的沖擊。所以,如果妳想快速開發壹個網站,並且考慮到APP客戶端的API調用需求,Django是可以信賴的。
(2)燒瓶
與Django相比,Flask是壹個輕量級的web框架。Flask最大的優勢就是性能優越,適合用手機客戶端開發後臺API服務。基於Flask的Restful API服務在中國非常流行,需求也非常大。知名公司如百度、網易、小米、陌陌等都有基於Flask的應用部署。當然,如果想做傳統網站,還是建議用Django。Flask有後端和API的優勢,不適合搭建全功能網站。
2網絡爬蟲
網絡爬蟲是Python中常見的場景。國際上,google早期使用Python語言作為網絡爬蟲的基礎,促進了Python語言的應用和發展。過去,中國許多人使用收藏者來搜索在線內容。現在用Python收集網上信息比以前容易多了。
Python在這方面積累了很多工具,無論是模擬HTTP請求的Requests,解析HTML DOM的PyQuery/BeautifulSoup,自動化分布式抓取任務的Scrapy,還是簡化數據庫訪問的各種ORM,都讓Python成為數據抓取的首選語言之壹。特別是爬取後的數據分析計算,是Python最擅長的領域,非常容易集成。目前Python中流行的網絡爬蟲框架是scrapy,非常強大。
3人工智能和機器學習
人工智能是現在非常熱的方向,AI熱潮讓Python語言的未來充滿無限潛力。現在發布的幾個很有影響力的AI框架,大多是Python實現。為什麽?
因為Python足夠動態,有足夠的性能,這是AI技術要求的技術特征。比如壹些基於Python的深度學習庫,深度學習方向,機器學習方向,自然語言處理方向的網站,基本都是通過Python實現的。機器學習,尤其是現在流行的深度學習,其工具框架大多提供Python接口。Python在科學計算領域壹直有著良好的口碑,其簡潔明了的語法和豐富的計算工具深受該領域開發者的喜愛。
早在深度學習和Tensorflow流行之前,Python中就有scikit-learn,可以輕松完成幾乎所有的機器學習模型。從經典數據集下載幾行簡單的代碼就可以建立模型。有了熊貓、matplotlib等工具,可以輕松調整。
Tensorflow、PyTorch、MXNet、Keras等深度學習框架極大地拓展了機器學習的可能性。使用Keras編寫壹個手寫數字識別的深度學習網絡,只需要幾十行代碼,借助底層實現就可以方便地調用包括GPU在內的大量資源來完成工作。
值得壹提的是,無論什麽框架,Python都只是作為前端描述語言,實際計算都是通過底層C/C++實現的。Python可以方便地引入和使用C/C++項目和庫,從而擴展其功能和性能。在如此大規模的計算中,Python被廣泛應用於機器學習領域的壹個重要原因就是讓開發者更加註重邏輯,從內存分配等復雜的工作中解脫出來。
4數據分析和處理
Python有完整的數據分析和處理的生態環境。對於“大數據”分析涉及的分布式計算、數據可視化和數據庫操作,Python中有成熟的模塊。對於Hadoop-MapReduce和Spark,可以直接用Python來完成計算邏輯。這對數據科學家和數據工程師來說都非常方便。
5服務器運維等小工具
Python對於服務器運維也是非常重要的。目前幾乎所有的Linux發行版都有自己的Python解釋器,所以在Linux服務器上使用Python腳本進行批量文件部署和操作調整成為了非常好的選擇。Python還包含了很多方便的工具,從規範ssh/sftp的paramiko,到監控服務的supervisor,再到bazel等構建工具,甚至還有conan等C++的包管理工具。Python提供了全面的工具集合,在此基礎上結合Web,開發便於運維的工具會變得非常簡單。
更有意思的是,Python社區的開發者還做了itchat之類的開發工具包,妳可以用微信來管理服務器或者各種服務的運行。想想吧。壹個微信機器人,可以在每天某個時間某個地方出現異常的時候,報告服務器或者程序的運行情況,甚至包括matplotlib/seaborn繪制的圖表,壹目了然,妳給它發壹句簡單的話就可以完成服務器的調整。
想學的童鞋可以加壹條企鵝裙。前三名是227,中間是435,後三名是450。可以免費分享經驗,用視頻資料講解行情。
6桌面程序
Python還可以用於桌面軟件開發(比如sublime text等。)甚至移動開發(見kivy)。Python簡單方便,工具包齊全的環境可以大大減輕開發者的負擔。著名的UI框架QT有PyQT,Python語言的實現版本。Python簡單易用,QT優雅,可以輕松開發復雜接口的桌面程序,輕松實現跨平臺特性。
7多媒體應用
可以使用Python的PIL、Piddle、ReportLab等模塊處理圖像、聲音、視頻、動畫,也可以使用Python生成動態圖表和統計分析圖表。此外,PyOpenGl模塊可用於非常快速有效地編寫3D場景。