Python的誕生歷史比Web還要早,由于Python是一種解釋型的腳本語(yǔ)言,開(kāi)發(fā)效率高,所以非常適合用來(lái)做Web開(kāi)發(fā)。
Python有上百種Web開(kāi)發(fā)框架,有很多成熟的模板技術(shù),選擇Python開(kāi)發(fā)Web應(yīng)用,不但開(kāi)發(fā)效率高,而且運(yùn)行速度快。
常用的web開(kāi)發(fā)框架有:Django、Flask、Tornado等。
許多知名的互聯(lián)網(wǎng)企業(yè)將python作為主要開(kāi)發(fā)語(yǔ)言:豆瓣、知乎、果殼網(wǎng)、Google、NASA、YouTube、Facebook……
由于后臺(tái)服務(wù)器的通用性,除了狹義的網(wǎng)站之外,很多App和游戲的服務(wù)器端也同樣用Python實(shí)現(xiàn)。
二、網(wǎng)絡(luò)爬蟲(chóng)
許多人對(duì)編程的熱情始于好奇,終于停滯。
距離真槍實(shí)干做開(kāi)發(fā)有技術(shù)差距,也無(wú)人指點(diǎn)提帶,也不知當(dāng)下水平能干嘛?就在這樣的疑惑循環(huán)中,編程技能止步不前,而爬蟲(chóng)是的進(jìn)階方向之一。
網(wǎng)絡(luò)爬蟲(chóng)是Python比較常用的一個(gè)場(chǎng)景,國(guó)際上,google在早期大量地使用Python語(yǔ)言作為網(wǎng)絡(luò)爬蟲(chóng)的基礎(chǔ),帶動(dòng)了整個(gè)Python語(yǔ)言的應(yīng)用發(fā)展。以前國(guó)內(nèi)很多人用采集器搜刮網(wǎng)上的內(nèi)容,現(xiàn)在用Python收集網(wǎng)上的信息比以前容易很多了,如:
從各大網(wǎng)站爬取商品折扣信息,比較獲取最優(yōu)選擇;
對(duì)社交網(wǎng)絡(luò)上發(fā)言進(jìn)行收集分類,生成情緒地圖,分析語(yǔ)言習(xí)慣;
爬取網(wǎng)易云音樂(lè)某一類歌曲的所有評(píng)論,生成詞云;
按條件篩選獲得豆瓣的電影書(shū)籍信息并生成表格……
應(yīng)用實(shí)在太多,幾乎每個(gè)人學(xué)習(xí)爬蟲(chóng)之后都能夠通過(guò)爬蟲(chóng)去做一些好玩有趣有用的事。
三、人工智能
人工智能是現(xiàn)在非?;鸬囊粋€(gè)方向,AI熱潮讓Python語(yǔ)言的未來(lái)充滿了無(wú)限的潛力?,F(xiàn)在釋放出來(lái)的幾個(gè)非常有影響力的AI框架,大多是Python的實(shí)現(xiàn),為什么呢?
因?yàn)镻ython有很多庫(kù)很方便做人工智能,比如numpy,scipy做數(shù)值計(jì)算的,sklearn做機(jī)器學(xué)習(xí)的,pybrain做神經(jīng)網(wǎng)絡(luò)的,matplotlib將數(shù)據(jù)可視化的。在人工智能大范疇領(lǐng)域內(nèi)的數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等方面都是主流的編程語(yǔ)言,得到廣泛的支持和應(yīng)用。
人工智能的核心算法大部分還是依賴于C/C++的,因?yàn)槭怯?jì)算密集型,需要非常精細(xì)的優(yōu)化,還需要GPU、專用硬件之類的接口,這些都只有C/C++能做到。
而Python是這些庫(kù)的API binding,使用Python是因?yàn)镃Python的膠水語(yǔ)言特性,要開(kāi)發(fā)一個(gè)其他語(yǔ)言到C/C++的跨語(yǔ)言接口,Python是最容易的,比其他語(yǔ)言的門檻要低不少,尤其是使用Cython的時(shí)候。
四、數(shù)據(jù)分析
數(shù)據(jù)分析處理方面,Python有很完備的生態(tài)環(huán)境?!按髷?shù)據(jù)”分析中涉及到的分布式計(jì)算、數(shù)據(jù)可視化、數(shù)據(jù)庫(kù)操作等,Python中都有成熟的模塊可以選擇完成其功能。對(duì)于Hadoop-MapReduce和Spark,都可以直接使用Python完成計(jì)算邏輯,這無(wú)論對(duì)于數(shù)據(jù)科學(xué)家還是對(duì)于數(shù)據(jù)工程師而言都是十分便利的。
五、自動(dòng)化運(yùn)維
Python對(duì)于服務(wù)器運(yùn)維而言也有十分重要的用途。由于目前幾乎所有Linux發(fā)行版中都自帶了Python解釋器,使用Python腳本進(jìn)行批量化的文件部署和運(yùn)行調(diào)整都成了Linux服務(wù)器上很不錯(cuò)的選擇。Python中也含許多方便的工具,從調(diào)控ssh/sftp用的paramiko,到監(jiān)控服務(wù)用的supervisor,再到bazel等構(gòu)建工具,甚至conan等用于C++的管理工具,Python提供了全方位的工具集合,而在這基礎(chǔ)上,結(jié)合Web,開(kāi)發(fā)方便運(yùn)維的工具會(huì)變得十分簡(jiǎn)單。
六、Python的其他應(yīng)用舉例
系統(tǒng)編程:提供API,能方便進(jìn)行系統(tǒng)維護(hù)和管理,Linux下標(biāo)志性語(yǔ)言之一,是很多系統(tǒng)管理員理想的編程工具。
圖形處理:有PIL、Tkinter等圖形庫(kù)支持,能方便進(jìn)行圖形處理。
數(shù)學(xué)處理:NumPy擴(kuò)展提供大量與許多標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)的接口。
文本處理:Python提供的re模塊能支持正則表達(dá)式,還提供SGML,XML分析模塊,許多程序員利用Python進(jìn)行XML程序的開(kāi)發(fā)。
數(shù)據(jù)庫(kù)編程:程序員可通過(guò)遵循PythonDB-API(數(shù)據(jù)庫(kù)應(yīng)用程序編程接口)規(guī)范的模塊與MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等數(shù)據(jù)庫(kù)通信。Python自帶有一個(gè)Gadfly模塊,提供了一個(gè)完整的SQL環(huán)境。
網(wǎng)絡(luò)編程:提供豐富的模塊支持sockets編程,能方便快速地開(kāi)發(fā)分布式應(yīng)用程序。很多大規(guī)模軟件開(kāi)發(fā)計(jì)劃例如Zope,Mnet及BitTorrent.Google都在廣泛地使用它。
Web編程:應(yīng)用的開(kāi)發(fā)語(yǔ)言,支持最新的XML技術(shù)。
多媒體應(yīng)用:Python的PyOpenGL模塊封裝了“OpenGL應(yīng)用程序編程接口”,能進(jìn)行二維和三維圖像處理。PyGame模塊可用于編寫游戲軟件。