日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
這4個(gè)Python實(shí)戰(zhàn)項(xiàng)目,讓你瞬間讀懂Python!

前言

創(chuàng)新互聯(lián)建站一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、成都網(wǎng)頁設(shè)計(jì)、小程序制作、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、重慶App定制開發(fā)是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!

Python 是一種極具可讀性和通用性的編程語言。Python 這個(gè)名字的靈感來自于英國喜劇團(tuán)體 Monty Python,它的開發(fā)團(tuán)隊(duì)有一個(gè)重要的基礎(chǔ)目標(biāo),就是使語言使用起來很有趣。Python 易于設(shè)置,并且是用相對(duì)直接的風(fēng)格來編寫,對(duì)錯(cuò)誤會(huì)提供即時(shí)反饋,對(duì)初學(xué)者而言是個(gè)很好的選擇。

Python 是一種多范式語言,也就是說,它支持多種編程風(fēng)格,包括腳本和面向?qū)ο螅@使得它適用于通用目的。隨著越來越多地在工業(yè)中,被諸如聯(lián)合太空聯(lián)盟(NASA 的主要飛機(jī)支持承包商)和工業(yè)光魔(VFX 和盧卡斯影業(yè)的動(dòng)畫工作室)等組織使用,Python 為那些尋求額外編程語言的人提供了巨大的潛力 。

當(dāng)一個(gè)重要的被稱為 comp.lang.python 的 Python 新聞組在 1994 年形成時(shí),Python 的用戶基礎(chǔ)不斷增長,這為 Python 成為開源開發(fā)中最受歡迎的編程語言之一鋪平了道路。

Python當(dāng)下真的很火。Python實(shí)戰(zhàn)項(xiàng)目,也一直尤為關(guān)注,接下來,和大家介紹下Python練手的實(shí)戰(zhàn)項(xiàng)目。

python項(xiàng)目練習(xí)一:即時(shí)標(biāo)記

這是《python基礎(chǔ)教程》后面的實(shí)踐,照著寫寫,一方面是來熟悉python的代碼方式,另一方面是練習(xí)使用python中的基本的以及非基本的語法,做到熟能生巧。

這個(gè)項(xiàng)目一開始比較簡單,不過重構(gòu)之后就有些復(fù)雜了,但是更靈活了。

按照書上所說,重構(gòu)之后的程序,分為四個(gè)模塊:處理程序模塊,過濾器模塊,規(guī)則(其實(shí)應(yīng)該是處理規(guī)則),語法分析器。

先來說處理程序模塊,這個(gè)模塊的作用有兩個(gè),一個(gè)是提供那些固定的html標(biāo)記的輸出(每一個(gè)標(biāo)記都有start和end),另一個(gè)是對(duì)這個(gè)標(biāo)記輸出的開始和結(jié)束提供了一個(gè)友好的訪問接口。來看下程序handlers.py:

這個(gè)程序堪稱是整個(gè)“項(xiàng)目”的基石所在:提供了標(biāo)簽的輸出,以及字符串的替換。理解起來也比較簡單。

再來看第二個(gè)模塊“過濾器”,這個(gè)模塊更為簡單,其實(shí)就是一個(gè)正則表達(dá)式的字符串。相關(guān)代碼如下:

這就是三個(gè)過濾器了,分別是:強(qiáng)調(diào)牌過濾器(用×號(hào)標(biāo)出的),url牌過濾器,email牌過濾器。熟悉正則表達(dá)式的同學(xué)理解起來是沒有壓力的。

再來看第三個(gè)模塊“規(guī)則”,這個(gè)模塊,拋開那祖父類不說,其他類應(yīng)該有的兩個(gè)方法是condition和action,前者是用來判斷讀進(jìn)來的字符串是不是符合自家規(guī)則,后者是用來執(zhí)行操作的,所謂的執(zhí)行操作就是指調(diào)用“處理程序模塊”,輸出前標(biāo)簽、內(nèi)容、后標(biāo)簽。 來看下這個(gè)模塊的代碼,其實(shí)這個(gè)里面幾個(gè)類的關(guān)系,畫到類圖里面看會(huì)比較清晰。 rules.py:

補(bǔ)充utils.py:

如果你在學(xué)習(xí)Python的過程中遇見了很多疑問和難題,可以加-q-u-n 227 -435-450里面有軟件視頻資料免費(fèi)

總結(jié)一下:

最后隆重的來看下“語法分析器模塊”,這個(gè)模塊的作用其實(shí)就是協(xié)調(diào)讀入的文本和其他模塊的關(guān)系。在往重點(diǎn)說就是,提供了兩個(gè)存放“規(guī)則”和“過濾器”的列表,這么做的好處就是使得整個(gè)程序的靈活性得到了極大的提高,使得規(guī)則和過濾器變成的熱插拔的方式,當(dāng)然這個(gè)也歸功于前面在寫規(guī)則和過濾器時(shí)每一種類型的規(guī)則(過濾器)都單獨(dú)的寫成了一個(gè)類,而不是用if..else來區(qū)分。 看代碼:

這個(gè)模塊里面的處理思路是,遍歷客戶端(也就是程序執(zhí)行的入口)給插進(jìn)去的所有的規(guī)則和過濾器,來處理讀進(jìn)來的文本。

有一個(gè)細(xì)節(jié)的地方也要說一下,其實(shí)是和前面寫的呼應(yīng)一下,就是在遍歷規(guī)則的時(shí)候通過調(diào)用condition這個(gè)東西來判斷是否符合當(dāng)前規(guī)則。

我覺得這個(gè)程序很像是命令行模式,有空可以復(fù)習(xí)一下該模式,以保持記憶網(wǎng)節(jié)點(diǎn)的牢固性。

最后說一下我以為的這個(gè)程序的用途:

1、用來做代碼高亮分析,如果改寫成js版的話,可以做一個(gè)在線代碼編輯器。

2、可以用來學(xué)習(xí),供我寫博文用。

還有其他的思路,可以留下您的真知灼見。

補(bǔ)充一個(gè)類圖,很簡陋,但是應(yīng)該能說明之間的關(guān)系。另外我還是建議如果看代碼捋不清關(guān)系最好自己畫圖,自己畫圖才能熟悉整個(gè)結(jié)構(gòu)。

python項(xiàng)目練習(xí)二:畫幅好畫

這是《python基礎(chǔ)教程》中的第二個(gè)項(xiàng)目,關(guān)于python操作PDF

涉及到的知識(shí)點(diǎn)

1、urllib的使用

2、reportlab庫的使用

這個(gè)例子著實(shí)很簡單,不過我發(fā)現(xiàn)在python里面可以直接在數(shù)組[]里面寫for循環(huán),真是越用越方便。

下面是代碼:

python項(xiàng)目練習(xí)三:萬能的XML

這個(gè)項(xiàng)目的名稱與其叫做萬能的XML不如叫做自動(dòng)構(gòu)建網(wǎng)站,根據(jù)一份XML文件,生成對(duì)應(yīng)目錄結(jié)構(gòu)的網(wǎng)站,不過只有html還是太過于簡單了,如果要是可以連帶生成css那就比較強(qiáng)大了。這個(gè)有待后續(xù)研發(fā),先來研究下怎么html網(wǎng)站結(jié)構(gòu)。 既然是通過XML結(jié)構(gòu)生成網(wǎng)站,那所有的事情都應(yīng)該由這個(gè)XML文件來。先來看下這個(gè)XML文件,website.xml:

有了這個(gè)文件,下面應(yīng)該來看怎么通過這個(gè)文件生成網(wǎng)站。

首先我們要解析這個(gè)xml文件,python解析xml和在java中一樣,有兩種方式,SAX和DOM,兩種處理方式不同點(diǎn)在于速度和范圍,前者講究的是效率,每次只處理文檔的一小部分,快速而能有效的利用內(nèi)存,后者是相反的處理方式,先把所有的文檔載入到內(nèi)存,然后再進(jìn)行處理,速度比較慢,也比較消耗內(nèi)存,唯一的好處就是可以操作整個(gè)文檔。

在python中使用sax方式處理xml要先引入xml.sax中的parse函數(shù),還有xml.sax.handler中的ContentHandler,后面的這個(gè)類是要和parse函數(shù)來配合使用的。使用方式如下: parse('xxx.xml',xxxHandler),這里面的xxxHandler要繼承上面的ContentHandler,不過只要繼承就行,不需要有所作為。 然后這個(gè)parse函數(shù)在處理xml文件的時(shí)候,會(huì)調(diào)用xxxHandler中的startElement函數(shù)和endElement函數(shù)來一個(gè)xml中的標(biāo)簽的開始和結(jié)束,中間的過程使用一個(gè)名為characters的函數(shù)來處理標(biāo)簽內(nèi)部的所有字符串。

有了上面的這些認(rèn)識(shí),我們已經(jīng)知道如何處理xml文件了,然后再來看那個(gè)罪惡的源頭website.xml文件,分析其結(jié)構(gòu),只有兩個(gè)節(jié)點(diǎn):page和directory,很明顯page表示一個(gè)頁面,directory表示一個(gè)目錄。

所以處理這個(gè)xml文件的思路就變的清晰了。讀取xml文件的每一個(gè)節(jié)點(diǎn),然后判斷是page還是directory如果是page則創(chuàng)建html頁面,然后把節(jié)點(diǎn)中的內(nèi)容寫到文件里。如果遇到directory就創(chuàng)建一個(gè)文件夾,然后再處理其內(nèi)部的page節(jié)點(diǎn)(如果存在的話)。

下面來看這部分代碼,書中的實(shí)現(xiàn)比較復(fù)雜,比較靈活。先來看,然后在分析。

看起來這個(gè)程序上面分析的復(fù)雜了一些,不過偉人毛毛說過,任何復(fù)雜的程序都是紙老虎。那我們再來分析一下這個(gè)程序。

首先看到這個(gè)程序是有兩個(gè)類,其實(shí)完全可以當(dāng)作一個(gè)類,因?yàn)橛辛死^承。

然后再來看它多了些什么,除了我們分析出來的startElement和endElement以及characters,多出來了startPage,endPage;startDirectory,endDirectory;defaultStart,defaultEnd;ensureDirectory;writeHeader,writeFooter;和dispatch,這些個(gè)函數(shù)。除了dispatch,前面的函數(shù)都很好理解,每一對(duì)函數(shù)都是單純的處理對(duì)應(yīng)的html標(biāo)簽以及xml節(jié)點(diǎn)。而dispatch比較復(fù)雜,復(fù)雜之處在于他是用來動(dòng)態(tài)拼合函數(shù)并且進(jìn)行執(zhí)行的。

dispatch的處理思路是,首先根據(jù)傳遞的參數(shù)(就是操作名稱以及節(jié)點(diǎn)名稱)判斷是否存在對(duì)應(yīng)的函數(shù)如startPage,如果不存在則執(zhí)行default+操作名稱:如defaultStart。

一個(gè)函數(shù)一個(gè)函數(shù)搞清楚之后,就知道整個(gè)處理流程是什么樣了。首先創(chuàng)建一個(gè)public_html的文件,存放整個(gè)網(wǎng)站,然后讀xml的節(jié)點(diǎn),通過startElement和endElement調(diào)用dispatch進(jìn)行處理。然后就是dispatch怎么調(diào)用具體的處理函數(shù)了。 到此為止,這個(gè)項(xiàng)目算是分析完了。

主要掌握的內(nèi)容一個(gè)是python中使用SAX處理XML,另一個(gè)就是python中的函數(shù)的使用,比如getattr,傳參數(shù)時(shí)的星號(hào)……

python項(xiàng)目練習(xí)四:新聞聚合

書中的第四個(gè)練習(xí),新聞聚合?,F(xiàn)在很少見的一類應(yīng)用,至少我從來沒有用過,又叫做Usenet。這個(gè)程序的主要功能是用來從指定的來源(這里是Usenet新聞組)收集信息,然后講這些信息保存到指定的目的文件中(這里使用了兩種形式:純文本和html文件)。這個(gè)程序的用處有些類似于現(xiàn)在的博客訂閱工具或者叫RSS訂閱器。

先上代碼,然后再來逐一分析:

這個(gè)程序,首先從整體上進(jìn)行分析,重點(diǎn)部分在于NewsAgent,它的作用是存儲(chǔ)新聞來源,存儲(chǔ)目標(biāo)地址,然后在分別調(diào)用來源服務(wù)器(NNTPSource以及SimpleWebSource)以及寫新聞的類(PlainDestination和HTMLDestination)。所以從這里也看的出,NNTPSource是專門用來獲取新聞服務(wù)器上的信息的,SimpleWebSource是獲取一個(gè)url上的數(shù)據(jù)的。而PlainDestination和HTMLDestination的作用很明顯,前者是用來輸出獲取到的內(nèi)容到終端的,后者是寫數(shù)據(jù)到html文件中的。

有了這些分析,然后在來看主程序中的內(nèi)容,主程序就是來給NewsAgent添加信息源和輸出目的地址的。

這確實(shí)是個(gè)簡單的程序,不過這個(gè)程序可是用到了分層了

? 著作權(quán)歸作者所有


分享名稱:這4個(gè)Python實(shí)戰(zhàn)項(xiàng)目,讓你瞬間讀懂Python!
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/coidsgg.html