91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

4個Python經(jīng)典項目實戰(zhàn),練手必備!

葉楓架構(gòu)師 ? 來源:葉楓架構(gòu)師 ? 作者:葉楓架構(gòu)師 ? 2022-02-23 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-5ac55e805898abf1?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
當一個重要的被稱為comp.lang.python的Python新聞組在1994年形成時,Python 的用戶基礎(chǔ)不斷增長,這為Python成為開源開發(fā)中最受歡迎的編程語言之一鋪平了道路。

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

Python項目練習一:即時標記

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

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

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-0223181b32790536?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-4aa8ddb5175514d9?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-e8db657f125b7ad9?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

補充utils.py:

![image](https://upload-images.jianshu.io/upload_images/15344105-47996443f4cf845b?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

總結(jié)一下:

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

![image](https://upload-images.jianshu.io/upload_images/15344105-bccfefe9df21ab2e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

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

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

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

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

2、可以用來學習,供我寫博文用。

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-1f2b146fa253db0a?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Python項目練習二:畫幅好畫

這是《Python基礎(chǔ)教程》中的第二個項目,關(guān)于Python操作PDF,涉及到的知識點:

1、urllib的使用

2、reportlab庫的使用

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

下面是代碼:

![image](https://upload-images.jianshu.io/upload_images/15344105-dcc1b04cacc5dfc2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Python項目練習三:萬能的XML

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

![image](https://upload-images.jianshu.io/upload_images/15344105-e036165132747246?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

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

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

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

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-3ad15bf93ce91e6e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

首先看到這個程序是有兩個類,其實完全可以當作一個類,因為有了繼承。

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

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

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

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

python項目練習四:新聞聚合

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

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

![image](https://upload-images.jianshu.io/upload_images/15344105-ab02782628b69671?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

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

這確實是個簡單的程序,不過這個程序可是用到了分層了。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73960
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4876

    瀏覽量

    90025
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    1688 商品詳情 API 調(diào)用與數(shù)據(jù)解析 Python 實戰(zhàn)

    你想要的是 1688 商品詳情 API 的 Python 調(diào)用與數(shù)據(jù)解析實戰(zhàn)方案,核心是完成 API 憑證配置、接口請求(含簽名)、響應(yīng)數(shù)據(jù)解析、異常處理 的全流程落地,我會提供可直接運行的代碼,并
    的頭像 發(fā)表于 02-10 11:23 ?252次閱讀

    京東關(guān)鍵詞搜索商品列表的Python爬蟲實戰(zhàn)

    京東關(guān)鍵詞搜索商品列表 Python 爬蟲實戰(zhàn) 你想要實現(xiàn)京東關(guān)鍵詞搜索商品的爬蟲,我會從 合規(guī)聲明、環(huán)境準備、頁面分析、代碼實現(xiàn)、反爬優(yōu)化 五方面展開,幫助你完成實戰(zhàn)
    的頭像 發(fā)表于 01-04 10:16 ?705次閱讀

    4聲道全場景覆蓋!華潤微7388車載功放芯片改裝實戰(zhàn)

    #華潤微7388 #4聲道車載功放 #車載音響改裝 #移動HiFi #深智微科技 #芯片實戰(zhàn)
    的頭像 發(fā)表于 12-16 15:27 ?710次閱讀

    開源 | 60余套STM32單片機、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項目(開發(fā)板+教程+源碼)

    嵌入式實戰(zhàn)項目推薦15嵌入式Linux+Qt綜合應(yīng)用項目,涉及家居、醫(yī)療、農(nóng)業(yè)等多種應(yīng)用領(lǐng)域,案例中使用了嵌入式、物聯(lián)網(wǎng)、人工智能多技術(shù),包括Linux應(yīng)用開發(fā)、Q
    的頭像 發(fā)表于 12-04 11:42 ?647次閱讀
    開源 | 60余套STM32單片機、嵌入式Linux、物聯(lián)網(wǎng)、人工智能<b class='flag-5'>項目</b>(開發(fā)板+教程+源碼)

    儲能項目從規(guī)劃到運營的全流程實戰(zhàn)指南

    隨著儲能技術(shù)的成熟和成本的下降,儲能項目正從示范走向規(guī)模化應(yīng)用。然而,從概念到落地,儲能項目需要經(jīng)歷一系統(tǒng)化的實施過程。本文將提供一從規(guī)劃到運營的全流程
    的頭像 發(fā)表于 10-27 10:07 ?620次閱讀
    儲能<b class='flag-5'>項目</b>從規(guī)劃到運營的全流程<b class='flag-5'>實戰(zhàn)</b>指南

    Python 給 Amazon 做“全身 CT”——可量產(chǎn)、可擴展的商品詳情爬蟲實戰(zhàn)

    一、技術(shù)選型:為什么選 Python 而不是 Java? 結(jié)論: “調(diào)研階段用 Python,上線后如果 QPS 爆表再考慮 Java 重構(gòu)?!?二、整體架構(gòu)速覽(3 分鐘看懂) 三、開發(fā)前準備(5
    的頭像 發(fā)表于 10-21 16:59 ?515次閱讀
    用 <b class='flag-5'>Python</b> 給 Amazon 做“全身 CT”——可量產(chǎn)、可擴展的商品詳情爬蟲<b class='flag-5'>實戰(zhàn)</b>

    淘寶商品詳情接口(item_get)企業(yè)級全解析:參數(shù)配置、簽名機制與 Python 代碼實戰(zhàn)

    本文詳解淘寶開放平臺taobao.item_get接口對接全流程,涵蓋參數(shù)配置、MD5簽名生成、Python企業(yè)級代碼實現(xiàn)及高頻問題排查,提供可落地的實戰(zhàn)方案,助你高效穩(wěn)定獲取商品數(shù)據(jù)。
    的頭像 發(fā)表于 09-26 09:13 ?835次閱讀
    淘寶商品詳情接口(item_get)企業(yè)級全解析:參數(shù)配置、簽名機制與 <b class='flag-5'>Python</b> 代碼<b class='flag-5'>實戰(zhàn)</b>

    深圳站報名火熱進行中!睿擎工業(yè)平臺線下實戰(zhàn) Workshop,親手實戰(zhàn)4小時解鎖工業(yè)級開發(fā)!|活動預(yù)告

    想一站式實戰(zhàn)QT圖形開發(fā)、EtherCAT通信、RPMSG多核交互?睿擎工業(yè)平臺深度實戰(zhàn)Workshop深圳站報名火熱進行中!這是一場專為工業(yè)開發(fā)者打造的沉浸式實戰(zhàn)體驗,4小時高強度
    的頭像 發(fā)表于 09-14 10:04 ?1284次閱讀
    深圳站報名火熱進行中!睿擎工業(yè)平臺線下<b class='flag-5'>實戰(zhàn)</b> Workshop,親手<b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>4</b>小時解鎖工業(yè)級開發(fā)!|活動預(yù)告

    項目實戰(zhàn)】基于Hi3861的鴻蒙智能小車(循跡、超聲波避障、遠程控制、語音控制、4G定位)有教程代碼

    入門鴻蒙物聯(lián)網(wǎng)找不到“落地”項目——要么功能簡單練不到核心,要么資料零散易半途而廢。本次【項目實戰(zhàn)】聚焦基于Hi3861的鴻蒙智能小車,整合了循跡、超聲波避障、遠程控制、語音交互和4G
    的頭像 發(fā)表于 09-10 17:13 ?1306次閱讀
    【<b class='flag-5'>項目</b><b class='flag-5'>實戰(zhàn)</b>】基于Hi3861的鴻蒙智能小車(循跡、超聲波避障、遠程控制、語音控制、<b class='flag-5'>4</b>G定位)有教程代碼

    Ansible代碼上線項目實戰(zhàn)案例

    在DevOps浪潮中,自動化部署已經(jīng)成為每個運維工程師的必備技能。今天我將分享一完整的Ansible代碼上線項目實戰(zhàn)案例,讓你的部署效率提升10倍!
    的頭像 發(fā)表于 07-24 14:03 ?580次閱讀

    10RTL優(yōu)化實戰(zhàn)技巧

    今天我給大家總結(jié)10實戰(zhàn)級優(yōu)化技巧,每條都有具體案例,助你從根源上搞定資源問題!
    的頭像 發(fā)表于 07-21 15:01 ?856次閱讀

    HarmonyOS實戰(zhàn):組件化項目搭建

    ?本文將詳細講解HarmonyOs組件化項目搭建的全過程,帶領(lǐng)大家實現(xiàn)一組件化項目。 項目創(chuàng)建 首先創(chuàng)建一
    的頭像 發(fā)表于 06-09 14:58 ?671次閱讀
    HarmonyOS<b class='flag-5'>實戰(zhàn)</b>:組件化<b class='flag-5'>項目</b>搭建

    【新書速遞】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

    說說你想要這本書的理由15字以上。2、我們將從本帖留言中挑選4位幸運者贈送此書籍,共贈送4本。3、請在收到書籍后2星期內(nèi)提交不少于2篇試讀報告要求300字以上圖文并茂。4、試讀報告發(fā)
    的頭像 發(fā)表于 05-27 08:05 ?1763次閱讀
    【新書速遞】Yocto<b class='flag-5'>項目</b><b class='flag-5'>實戰(zhàn)</b>教程:高效定制嵌入式Linux系統(tǒng)

    【書籍評測活動NO.61】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

    +配套視頻 本書緊密結(jié)合 Yocto 項目的核心概念和實戰(zhàn)案例,結(jié)構(gòu)清晰、層次分明、由淺入深,將理論學習和實踐應(yīng)用有效結(jié)合。全書內(nèi)容大體分為三部分。 第一部分:系統(tǒng)并精要地介紹了Yocto
    發(fā)表于 05-21 10:00

    4臺樹莓派5跑動大模型!DeepSeek R1分布式實戰(zhàn)!

    導(dǎo)語“用4臺樹莓派5組網(wǎng),輕松運行大模型——這可能是2025年最顛覆認知的開源AI項目!”GitHub明星項目distributed-llama最新實戰(zhàn)案例曝光:通過獨創(chuàng)的動態(tài)模型切片
    的頭像 發(fā)表于 03-24 14:50 ?1409次閱讀
    <b class='flag-5'>4</b>臺樹莓派5跑動大模型!DeepSeek R1分布式<b class='flag-5'>實戰(zhàn)</b>!