mysql定義變量查詢,Python是學(xué)什么的?
為什么這么多人在學(xué)Python呢?很多小白都聽說Python很火,簡單易學(xué),學(xué)起來很容易,學(xué)習(xí)周期短,可是為啥要學(xué)Python呢?,下面談?wù)勎覍ython的感悟。
在PC時代大量的嵌入式的設(shè)備,底層的代碼,底層原理,以及底層邏輯運用,以及桌面的應(yīng)用都是用C、C++實現(xiàn)的,毋庸置疑它們是最接近底層,對底層有著強大的解釋說服力,也是最早的、最快的。隨著2000年電商的大規(guī)模的興起,多數(shù)人融入到這個大家庭中,逐漸地從PC時代過度到互聯(lián)網(wǎng)時代,Java開始王者歸來,再加上2010移動互聯(lián)網(wǎng)的爆發(fā)Android開始風(fēng)靡起來,Java更是如日中天,走向了輝煌。那我們現(xiàn)在為什么要學(xué)習(xí)Python呢?Python到底是用來干什么的?1、Web開發(fā)Python的誕生歷史比Web還要早,由于Python是一種解釋型的腳本語言,開發(fā)效率高,所以非常適合用來做Web開發(fā),大大提高了做web開發(fā)人員的效率。Python有上百種Web開發(fā)框架,有很多成熟的模板技術(shù),選擇Python開發(fā)Web應(yīng)用,不但開發(fā)效率高,而且運行速度快,加快了時代的發(fā)展。常用的web開發(fā)框架有:Django、Flask、Tornado 等。許多知名的互聯(lián)網(wǎng)企業(yè)或者小型公司將Python作為主要開發(fā)語言:豆瓣、知乎、果殼網(wǎng)、Google、NASA、YouTube、Facebook……由于后臺服務(wù)器的通用性,除了狹義的網(wǎng)站之外,很多App和游戲的服務(wù)器端也同樣用 Python實現(xiàn),來運行,完成相應(yīng)的工作。一個Web應(yīng)用的本質(zhì)就是:瀏覽器發(fā)送一個HTTP請求;服務(wù)器收到請求,生成一個HTML文檔;服務(wù)器把HTML文檔作為HTTP響應(yīng)的Body發(fā)送給瀏覽器;瀏覽器收到HTTP響應(yīng),從HTTP Body取出HTML文檔并顯示。所以,最簡單的Web應(yīng)用就是先把HTML用文件保存好,用一個現(xiàn)成的HTTP服務(wù)器軟件,接收用戶請求,從文件中讀取HTML,返回。Apache、Nginx、Lighttpd等這些常見的靜態(tài)服務(wù)器就是干這件事情的,完成這些事情的。如果要動態(tài)生成HTML,就需要把上述步驟自己來實現(xiàn)。不過,接受HTTP請求、解析HTTP請求、發(fā)送HTTP響應(yīng)都是苦力活,如果我們自己來寫這些底層代碼,還沒開始寫動態(tài)HTML呢,就得花個把月去讀HTTP規(guī)范。正確的做法是底層代碼由專門的服務(wù)器軟件實現(xiàn),我們用Python專注于生成HTML文檔。因為我們不希望接觸到TCP連接、HTTP原始請求和響應(yīng)格式,所以,需要一個統(tǒng)一的接口,讓我們專心用Python編寫Web業(yè)務(wù)。這個接口就是WSGI:Web Server Gateway Interface。(Web服務(wù)器網(wǎng)關(guān)接口)wsgi就是一種規(guī)范,它定義了使用web應(yīng)用程序與Python編寫的web服務(wù)器程序之間的接口格式。無論多么復(fù)雜的Web應(yīng)用程序,入口都是一個WSGI處理函數(shù)。HTTP請求的所有輸入信息都可以通過environ獲得,HTTP響應(yīng)的輸出都可以通過start_response()加上函數(shù)返回值作為Body。WSGI接口定義非常簡單,它只要求Web開發(fā)者實現(xiàn)一個函數(shù),就可以響應(yīng)HTTP請求。我們來看一個最簡單的Web版本的“Hello,web!”:上面的application()函數(shù)就是符合WSGI標(biāo)準(zhǔn)的一個HTTP處理函數(shù),它接收兩個參數(shù):environ:一個包含所有HTTP請求信息的dict對象;start_response:一個發(fā)送HTTP響應(yīng)的函數(shù)。在application()函數(shù)中,調(diào)用:就發(fā)送了HTTP響應(yīng)的Header,注意Header只能發(fā)送一次,也就是只能調(diào)用一次start_response()函數(shù)。start_response()函數(shù)接收兩個參數(shù),一個是HTTP響應(yīng)碼,一個是一組list表示的HTTP Header,每個Header用一個包含兩個str的tuple表示。通常情況下,都應(yīng)該把Content-Type頭發(fā)送給瀏覽器。其他很多常用的HTTP Header也應(yīng)該發(fā)送。然后,函數(shù)的返回值'<h1>Hello, web!</h1>'將作為HTTP響應(yīng)的Body發(fā)送給瀏覽器。有了WSGI,我們關(guān)心的就是如何從environ這個dict對象拿到HTTP請求信息,然后構(gòu)造HTML,通過start_response()發(fā)送Header,最后返回Body。了解了WSGI框架,我們發(fā)現(xiàn):其實一個Web App,就是寫一個WSGI的處理函數(shù),針對每個HTTP請求進行響應(yīng)。但是如何處理HTTP請求不是問題,問題是如何處理100個不同的URL。由于用Python開發(fā)一個Web框架十分容易,所以Python有上百個開源的Web框架。各種Web框架的優(yōu)缺點自己去了解一下就可以了,直接選擇一個比較流行的Web框架——Flask來使用。除了Flask,常見的Python Web框架還有:Django:全能型Web框架;web.py:一個小巧的Web框架;Bottle:和Flask類似的Web框架;Tornado:Facebook的開源異步Web框架。做一個游戲2、網(wǎng)絡(luò)爬蟲許多人對編程的熱情始于好奇,終于停滯,小有成就就止步于此。距離真槍實干做開發(fā)有技術(shù)差距,也無人指點提帶,也不知當(dāng)下水平能干嘛?就在這樣的疑惑循環(huán)中,編程技能止步不前,而爬蟲是最好的進階方向之一。網(wǎng)絡(luò)爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網(wǎng)絡(luò)爬蟲的基礎(chǔ),帶動了整個Python語言的應(yīng)用發(fā)展。以前國內(nèi)很多人用采集器搜刮網(wǎng)上的內(nèi)容,現(xiàn)在用Python收集網(wǎng)上的信息比以前容易很多了,如:從各大網(wǎng)站爬取商品折扣信息,比較獲取最優(yōu)選擇;對社交網(wǎng)絡(luò)上發(fā)言進行收集分類,生成情緒地圖,分析語言習(xí)慣;爬取網(wǎng)易云音樂某一類歌曲的所有評論,生成詞云;按條件篩選獲得豆瓣的電影書籍信息并生成表格……應(yīng)用實在太多,幾乎每個人學(xué)習(xí)爬蟲之后都能夠通過爬蟲去做一些好玩有趣有用的事。例子:爬取網(wǎng)絡(luò)上的歌曲3、人工智能人工智能是現(xiàn)在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現(xiàn)在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現(xiàn),為什么呢?因為Python有很多庫很方便做人工智能,比如numpy, scipy做數(shù)值計算的,sklearn做機器學(xué)習(xí)的,pybrain做神經(jīng)網(wǎng)絡(luò)的,matplotlib將數(shù)據(jù)可視化的。在人工智能大范疇領(lǐng)域內(nèi)的數(shù)據(jù)挖掘、機器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等方面都是主流的編程語言,得到廣泛的支持和應(yīng)用。人工智能的核心算法大部分還是依賴于C/C++的,因為是計算密集型,需要非常精細的優(yōu)化,還需要GPU、專用硬件之類的接口,這些都只有C/C++能做到,所有c/c++和P相結(jié)合就可以實現(xiàn)人工智能。4、Python的其他應(yīng)用舉例系統(tǒng)編程:提供API,能方便進行系統(tǒng)維護和管理,Linux下標(biāo)志性語言之一,是很多系統(tǒng)管理員理想的編程工具。圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。數(shù)學(xué)處理:NumPy擴展提供大量與許多標(biāo)準(zhǔn)數(shù)學(xué)庫的接口。文本處理:Python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用Python進行XML程序的開發(fā)。數(shù)據(jù)庫編程:程序員可通過遵循PythonDB-API(數(shù)據(jù)庫應(yīng)用程序編程接口)規(guī)范的模塊與MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等數(shù)據(jù)庫通信。Python自帶有一個Gadfly模塊,提供了一個完整的SQL環(huán)境。網(wǎng)絡(luò)編程:提供豐富的模塊支持sockets編程,能方便快速地開發(fā)分布式應(yīng)用程序。很多大規(guī)模軟件開發(fā)計劃例如Zope,Mnet及BitTorrent.Google都在廣泛地使用它。Web編程:應(yīng)用的開發(fā)語言,支持最新的XML技術(shù)。多媒體應(yīng)用:Python的PyOpenGL模塊封裝了“OpenGL應(yīng)用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用于編寫游戲軟件。黑客編程: Python有一個hack的庫,內(nèi)置了你熟悉的或不熟悉的函數(shù),但是缺少成就感。以上內(nèi)容分享自華為云社區(qū)《【云駐共創(chuàng)】你知道在未來Python主要的運用途徑和領(lǐng)域嗎?》,作者:楠羽。