機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)-第八章-Python基礎(chǔ)_第1頁(yè)
機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)-第八章-Python基礎(chǔ)_第2頁(yè)
機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)-第八章-Python基礎(chǔ)_第3頁(yè)
機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)-第八章-Python基礎(chǔ)_第4頁(yè)
機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)-第八章-Python基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)第八章基礎(chǔ)知識(shí)語言基礎(chǔ)函數(shù)類Python基礎(chǔ)文件創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章Python是由GuidovanRossum于九十年代初,在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究所設(shè)計(jì)和實(shí)現(xiàn)。經(jīng)過20多年的發(fā)展,Python已經(jīng)成為深度學(xué)習(xí)和機(jī)器學(xué)習(xí)最好的編程語言之一,也是計(jì)算機(jī)視覺、人工智能等優(yōu)選的語言和編程工具。Python特點(diǎn)是簡(jiǎn)單易學(xué),功能強(qiáng)大,可移植性和可擴(kuò)展性強(qiáng),開源免費(fèi),支持面向?qū)ο缶幊獭?.1基礎(chǔ)知識(shí)8.1基礎(chǔ)知識(shí)創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)8.1.1Python安裝與使用目前,Python版本有兩個(gè)不同的版本:Python2和較新的Python3。Python的開發(fā)者一直致力于豐富和強(qiáng)化其功能。Python的安裝很簡(jiǎn)單,打開Python官方主頁(yè)https://www./后,選擇適合自己的版本下載并安裝。如果使用的是Linux系統(tǒng),例如Ubuntu,那么可能已經(jīng)預(yù)裝了某個(gè)版本的Python,可以根據(jù)自己的需要進(jìn)行升級(jí)。Python自帶了一個(gè)在終端窗口中運(yùn)行的解釋器IDLE,無需保存整個(gè)程序就能夠運(yùn)行Python代碼片段。IDLE使用交互式編程模式,直接在提示符“>>>”后面輸入相應(yīng)的命令并回車執(zhí)行即可,如果執(zhí)行順利,就可以返回執(zhí)行結(jié)果,否則會(huì)拋出異常。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)8.1.2編碼規(guī)范(1)縮進(jìn)

Python程序依靠代碼塊的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系。對(duì)于類定義、函數(shù)定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及異常處理結(jié)構(gòu),行尾的冒號(hào)以及下一行的縮進(jìn)表示一個(gè)代碼塊的開始,而縮進(jìn)結(jié)束則代表一個(gè)代碼塊的結(jié)束。并且在編寫程序時(shí),同一個(gè)級(jí)別的代碼塊的縮進(jìn)量必須相同。(2)注釋注釋對(duì)于程序理解和團(tuán)隊(duì)合作開發(fā)具有非常重要的意義。一個(gè)可維護(hù)性和可讀性都很強(qiáng)的程序一般會(huì)包含30%以上的注釋。Python中常用的注釋方式主要有兩種:以符號(hào)#開始,表示本行#之后的內(nèi)容為注釋;包含在一對(duì)三引號(hào)之間且不屬于任何語句的內(nèi)容將被解釋器認(rèn)為是注釋。(3)每個(gè)import語句只導(dǎo)入一個(gè)模塊,盡量避免同時(shí)導(dǎo)入多個(gè)模塊。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)(4)如果一行語句太長(zhǎng),可以在行尾使用續(xù)行符“\”來表示下面緊接的一行仍屬于當(dāng)前語句。(5)使用必要的空格與空行增強(qiáng)代碼的可讀性。一般來說,運(yùn)算符兩側(cè)、函數(shù)參數(shù)之間、逗號(hào)兩側(cè)使用空格進(jìn)行分隔。(6)適當(dāng)使用異常處理結(jié)構(gòu)提高程序容錯(cuò)性和健壯性,但不能過多依賴異常處理結(jié)構(gòu),仍然需要適當(dāng)?shù)娘@式判斷。

創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)8.1.3模塊導(dǎo)入Python默認(rèn)安裝僅包含部分基本或核心模塊,但用戶可以很方便地安裝其他擴(kuò)展模塊,pip是管理擴(kuò)展模塊的重要工具。在Python啟動(dòng)時(shí),僅加載了很少的一部分模塊,在需要時(shí)由程序員顯式地加載其他模塊。這樣可以減小程序運(yùn)行的壓力,僅加載真正需要的模塊和功能,且具有很強(qiáng)的可擴(kuò)展性。模塊中可以定義變量、函數(shù)和類,也可以包含可執(zhí)行語句。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)1導(dǎo)入方法當(dāng)完成某些特定功能的一段程序需要反復(fù)執(zhí)行時(shí),可以將它以文件的形式存儲(chǔ)起來構(gòu)成一個(gè)模塊。定義好模塊之后,使用import語句引入模塊,from方法導(dǎo)入模塊,通過下面三個(gè)步驟來完成:在Python模塊加載路徑中查找相應(yīng)的模塊文件;將模塊文件編譯成中間代碼;執(zhí)行模塊文件中的代碼。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)2標(biāo)準(zhǔn)庫(kù)模塊

標(biāo)準(zhǔn)庫(kù)是Python自帶的開發(fā)包,包含的模塊非常多,一些常用的模塊如表8-1所示。

表8-1Python常用標(biāo)準(zhǔn)庫(kù)序號(hào)模塊名稱模塊的功能1sys獲取命令行的參數(shù)、程序的路徑和當(dāng)前系統(tǒng)等信息的功能。2osos模塊包含基本的操作系統(tǒng)功能。

3

globPython自帶的一個(gè)文件操作相關(guān)模塊,用它可以查找符合自己目的的文件。它的主要方法就是glob,該方法返回所有匹配的文件路徑列表。4math實(shí)現(xiàn)基本的數(shù)據(jù)運(yùn)算。5random用于生成隨機(jī)數(shù)。6platform獲取所用操作系統(tǒng)的詳細(xì)信息和與Python相關(guān)的信息。7subprocess用來生成子進(jìn)程,并可以通過管道連接它們的輸入/輸出錯(cuò)誤,以及獲得它們的返回值。8Queue提供隊(duì)列操作的模塊。9StringIO實(shí)現(xiàn)在內(nèi)存緩沖區(qū)中讀寫數(shù)據(jù)。10time提供各種關(guān)于時(shí)間的函數(shù)。11datetime日期格式化操作。使用help()函數(shù)可以查看函數(shù)或模塊用途的詳細(xì)說明,顯示幫助信息。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)8.1.4異常處理異常是指程序運(yùn)行時(shí)發(fā)生錯(cuò)誤。引發(fā)錯(cuò)誤的原因有很多,例如下標(biāo)越界、除零、網(wǎng)絡(luò)異常、磁盤空間不足、文件不存在等等。異常處理就是系統(tǒng)處理這些非正常的狀態(tài),保證程序不因運(yùn)行這些錯(cuò)誤而導(dǎo)致崩潰。Python使用異常對(duì)象表示異常,若程序在編譯或運(yùn)行過程中發(fā)生錯(cuò)誤,就會(huì)拋出異常對(duì)象,程序進(jìn)入異常處理。如果沒有處理這些異常對(duì)象,程序就會(huì)終止然后執(zhí)行回溯。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.1基礎(chǔ)知識(shí)3異常的回溯當(dāng)異常發(fā)生時(shí),程序會(huì)回溯異常,返回大量錯(cuò)誤信息。這可能會(huì)給程序員定位及糾錯(cuò)帶來困難,這時(shí)可以使用sys模塊來回溯最近一次異常。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2語言基礎(chǔ)8.2.1基本數(shù)據(jù)類型1標(biāo)識(shí)符標(biāo)識(shí)符用來標(biāo)識(shí)函數(shù)名、變量名、常量名、數(shù)組名和文件名等有效字符序列。標(biāo)識(shí)符的命名規(guī)則如下;(1)標(biāo)識(shí)符可以包含字母、數(shù)字和下劃線,但不能以數(shù)字開頭;(2)標(biāo)識(shí)符區(qū)分大小寫;(3)標(biāo)識(shí)符不能與保留字同名。Python中的保留字不能用作常數(shù)或變數(shù),或任何其他標(biāo)識(shí)符名稱,所有的關(guān)鍵字只包含小寫字母,所有保留字如下:

andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2變量與常量變量是在程序運(yùn)行過程中,值可以改變的量。所有的變量對(duì)應(yīng)唯一的變量名,變量名和變量值是兩個(gè)不同的概念,變量在內(nèi)存中占有一定的存儲(chǔ)單元,變量值就存儲(chǔ)在內(nèi)存單元中。變量的命名規(guī)則與標(biāo)識(shí)符的命名規(guī)則相同。變量名區(qū)分大小寫,如變量Machine和machine是兩個(gè)不同的變量。Python是強(qiáng)類型編程語言,解釋器會(huì)根據(jù)代碼中的賦值或運(yùn)算自動(dòng)判斷變量類型,在定義時(shí)不需要預(yù)先聲明變量的類型。同時(shí)Python還是一種動(dòng)態(tài)類型語言,變量的類型也可以隨時(shí)發(fā)生變化。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)Python有自動(dòng)內(nèi)存管理的功能,會(huì)自動(dòng)跟蹤所有的值,然后刪除沒有任何變量指向的值,因此在編程時(shí)不需要考慮內(nèi)存管理的問題。Python中變量按照作用域可以分為局部變量和全局變量。局部變量是在函數(shù)內(nèi)定義的變量,其作用域只有函數(shù)內(nèi)部,局部變量的生命周期伴隨著函數(shù)代碼塊的結(jié)束而結(jié)束。全局變量又稱外部變量,是在函數(shù)外部定義的變量。全局變量可以被文件內(nèi)任何函數(shù)和外部文件訪問,其作用域是整個(gè)程序。global保留字可以用于引用全局變量。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)3數(shù)字Python中數(shù)字?jǐn)?shù)據(jù)類型用于存儲(chǔ)數(shù)值,其數(shù)值是不允許改變的。因此如果改變數(shù)字?jǐn)?shù)據(jù)的值,系統(tǒng)將為數(shù)字重新分配內(nèi)存空間。Python中數(shù)字類型分為四種:整型int,又被稱為整型或整數(shù),只有正或負(fù)整數(shù),不包含小數(shù)點(diǎn),例如:1234、-1234。整數(shù)類型有一定的位數(shù)限制,在32位機(jī)器上,整數(shù)的位數(shù)為32位,在64位機(jī)器上,整數(shù)的位數(shù)為64位。長(zhǎng)整型long,無限大小的整數(shù),最后一位是大寫或小寫的字母L。浮點(diǎn)型float,

由整數(shù)部分與小數(shù)部分組成,浮點(diǎn)型也可以使用科學(xué)計(jì)數(shù)法表示。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2.2運(yùn)算符與表達(dá)式與其他計(jì)算機(jī)語言一樣,Python支持大多數(shù)算術(shù)運(yùn)算符、關(guān)系運(yùn)算符等,并遵循與大多數(shù)語言一樣的運(yùn)算符優(yōu)先級(jí)。Python還有一些特有的運(yùn)算符,例如成員測(cè)試運(yùn)算符、集合運(yùn)算符、同一性測(cè)試運(yùn)算符等。

Python運(yùn)算符包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符、成員運(yùn)算符和身份運(yùn)算符。Python表達(dá)式是將不同類型的數(shù)據(jù)(常量、變量、函數(shù))用運(yùn)算符按照一定得規(guī)則連接起來的式子。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)1算術(shù)運(yùn)算符和算術(shù)表達(dá)式Python算術(shù)運(yùn)算符包括四則運(yùn)算符、求模預(yù)算符和冪運(yùn)算符等,如表8-2所示。算術(shù)運(yùn)算符表達(dá)式說明+x+y加法運(yùn)算-x-

y減法運(yùn)算*x*y乘法運(yùn)算/x/y除法運(yùn)算%x%y求模運(yùn)算**x**y冪運(yùn)算//x//y兩數(shù)相除向下取整Python中的除法運(yùn)算采用浮點(diǎn)數(shù)計(jì)算,x/y運(yùn)算返回的結(jié)果是浮點(diǎn)類型?!?”為取模運(yùn)算,x%y的運(yùn)算結(jié)果是x除以y得到余數(shù)。操作符“//”可以從兩數(shù)相除中向下取整得到一個(gè)整數(shù),丟棄小數(shù)部分。表8-2算術(shù)運(yùn)算符表達(dá)式與說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2關(guān)系運(yùn)算符和關(guān)系表達(dá)式Python中各種關(guān)系運(yùn)算符如表8-3所示,運(yùn)算結(jié)果為布爾型True或False。運(yùn)算符表達(dá)式說明==a==b等于,比較對(duì)象是否相等!=或<>

a!=ba<>b不等于,比較兩個(gè)對(duì)象是否不相等>

a>b大于,比較a是否大于b<

a<b小于,比較a是否小于b>=a>=b大于等于,比較a是否大于或者等于b<=a<=b小于等于,比較a是否小于或者等于b表8-3關(guān)系運(yùn)算符表達(dá)式和說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)3邏輯運(yùn)算符與邏輯運(yùn)算表達(dá)式Python中邏輯運(yùn)算符包括與and、或or、非not,如表8-4所示。運(yùn)算符表達(dá)式說明andaandb邏輯與oraorb邏輯或notnota邏輯非表8-4邏輯運(yùn)算符表達(dá)式和說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)4位運(yùn)算符和位運(yùn)算表達(dá)式

Python按位運(yùn)算符把數(shù)字按照二進(jìn)制來進(jìn)行計(jì)算,如表8-5所示。運(yùn)算符表達(dá)式說明&a&b按位與運(yùn)算符:參與運(yùn)算的兩個(gè)數(shù),如果對(duì)應(yīng)的二進(jìn)制位都為1,則該位的運(yùn)算結(jié)果為1,否則為0|a|b按位或運(yùn)算符:參與運(yùn)算的兩個(gè)數(shù),只要其中一個(gè)數(shù)對(duì)應(yīng)的二進(jìn)位為1時(shí),則運(yùn)算結(jié)果就為1^a

^b按位異或運(yùn)算符:當(dāng)兩個(gè)數(shù)對(duì)應(yīng)的二進(jìn)位不同時(shí),結(jié)果為1,否則為0~~a按位取反運(yùn)算符:數(shù)字每個(gè)二進(jìn)制位進(jìn)行取反操作,即把1變?yōu)?,把0變?yōu)?<<

a<<2左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由"<<"右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0>>

a>>2右移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,">>"右邊的數(shù)指定移動(dòng)的位數(shù)表8-5位運(yùn)算符表達(dá)式和說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)位運(yùn)算符簡(jiǎn)單計(jì)算如表8-6所示。運(yùn)算操作結(jié)果a&b00111100&10001110

0000110012a|b00111000|00001101

0011110161a^b00111111^00001110

0011000149~a~00111100

11000011-61(有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼)a<<200111100<<211110000240a>>200111100>>2->0000111115表8-6位運(yùn)算符計(jì)算實(shí)例創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)5賦值運(yùn)算符與賦值表達(dá)式賦值語句是Python中最常用的運(yùn)算語句,賦值語句最基本格式為:變量=對(duì)象?!?”運(yùn)算符將賦值號(hào)右邊對(duì)象的值賦值給賦值號(hào)左邊的變量?!?=”的作用是將賦值號(hào)右邊的變量或值與賦值號(hào)左邊的變量或值求和,再賦值給賦值號(hào)左邊的變量,其他賦值運(yùn)算符與“+=”類似。賦值運(yùn)算符表達(dá)式及說明如表8-7所示。運(yùn)算符表達(dá)式說明=z=x+y將x+y的運(yùn)算結(jié)果賦值給z+=z+=x等價(jià)于z=z+x-=z-=x等價(jià)于z=z-x*=z*=x等價(jià)于z=z*x/=z/=x等價(jià)于z=z/x%=z%=x等價(jià)于z=z%x//=z//=x等價(jià)于z=z**x**=z**=x等價(jià)于z=z//x表8-7賦值運(yùn)算符表達(dá)式和說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)6成員運(yùn)算符與成員表達(dá)式Python中成員運(yùn)算符判斷一個(gè)元素是否在一個(gè)指定序列中,包括in與notin,如表8-8所示。運(yùn)算符表達(dá)式說明inainb如果在指定的序列b中找到值返回True,否則返回Falsenotinanotinb如果在指定的序列b中沒有找到值返回True,否則返回False表8-8成員運(yùn)算符表達(dá)式和說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)7轉(zhuǎn)義字符如果想要在字符中使用特殊字符,需要使用轉(zhuǎn)義字符,可以通過反斜杠“\”來實(shí)現(xiàn),常用的轉(zhuǎn)義字符用法如表8-9所示。轉(zhuǎn)義字符描述\(在行尾時(shí))續(xù)行符\\反斜杠符號(hào)\'單引號(hào)\"雙引號(hào)\a響鈴\b退格\e轉(zhuǎn)義\000空\(chéng)n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁(yè)\oyy八進(jìn)制數(shù),yy代表的字符,例如:\o12代表?yè)Q行\(zhòng)xyy十六進(jìn)制數(shù),yy代表的字符,例如:\x0a代表?yè)Q行\(zhòng)other其它的字符以普通格式輸出表8-9常用轉(zhuǎn)義字符用法創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2.3選擇與循環(huán)1選擇語句選擇語句通過判斷某些特定條件是否滿足,執(zhí)行兩個(gè)或多個(gè)分支中的某個(gè)分支,決定下一步程序的執(zhí)行流程,是一種非常重要的控制結(jié)構(gòu)。常見的選擇語句有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、多分支選擇結(jié)構(gòu)等,語言形式靈活多變,使用時(shí)根據(jù)具體的需求選擇合適的語句。Python中條件分支語句有if語句、ifelse語句和ifelif語句。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(1)單分支結(jié)構(gòu)單分支選擇結(jié)構(gòu)是最簡(jiǎn)單的選擇結(jié)構(gòu)。其中表達(dá)式后面的冒號(hào)“:”表示一個(gè)語句塊的開始,是不可缺少的,語句格式如下:if表達(dá)式:執(zhí)行語句塊語句功能:當(dāng)判定條件為真時(shí),執(zhí)行語句塊;條件為假時(shí),不執(zhí)行語句塊。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(2)雙分支結(jié)構(gòu)雙分支選擇結(jié)構(gòu)的語句格式如下:if表達(dá)式:執(zhí)行語句塊1else:執(zhí)行語句塊2語句功能:當(dāng)表達(dá)式為真時(shí),執(zhí)行語句塊1,否則執(zhí)行語句塊2。其中if語句后面緊跟表達(dá)式和冒號(hào),else語句后無表達(dá)式但需要冒號(hào)。if和else后語句塊不需要左右花括號(hào)。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(3)多分支結(jié)構(gòu)多分支選擇結(jié)構(gòu)可以實(shí)現(xiàn)更為復(fù)雜的邏輯,語句格式如下:if表達(dá)式1:執(zhí)行語句塊1elseif表達(dá)式2:執(zhí)行語句塊2elseif

表達(dá)式3:執(zhí)行語句塊3…………else:

執(zhí)行語句塊n語句功能:如果表達(dá)式1成立,則執(zhí)行語句塊1;當(dāng)表達(dá)式1不成立時(shí),程序流向下依次判斷,如果表達(dá)式2成立則執(zhí)行語句塊2,并以此類推,否則最終執(zhí)行語句塊n。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2循環(huán)語句在Python中可以使用循環(huán)語句有規(guī)律地反復(fù)執(zhí)行某些操作,解決一些實(shí)際應(yīng)用。Python中的循環(huán)語句有while循環(huán)和for循環(huán)。當(dāng)循環(huán)次數(shù)未知時(shí),一般使用while循環(huán);當(dāng)循環(huán)次數(shù)已知時(shí),一般使用for循環(huán)。Python中還有幾個(gè)循環(huán)控制語句break、continue和pass。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(1)while循環(huán)while循環(huán)語句的基本形式如下:while表達(dá)式:循環(huán)體循環(huán)體可以是單個(gè)語句或語句塊,判斷條件可以是任意表達(dá)式,其中任何非零、或非空的值均為真。語句功能:當(dāng)給定表達(dá)式為真時(shí),執(zhí)行循環(huán)體中語句或者語句塊,否則退出循環(huán)體。需要注意的是程序會(huì)先判斷表達(dá)式是否成立,然后執(zhí)行循環(huán)體。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(2)for循環(huán)for循環(huán)也稱為計(jì)數(shù)循環(huán),通常用于遍歷序列、集合和映射對(duì)象等。語句的基本形式如下:for變量in序列或迭代對(duì)象:

循環(huán)體語句功能:for循環(huán)語句每次循環(huán)時(shí),判斷變量是否還在序列或迭代對(duì)象中。如果仍在序列中,取出該值提供給循環(huán)體內(nèi)的語句使用;如果不在序列中,則循環(huán)結(jié)束。下面的代碼使用for循環(huán)遍歷打印一個(gè)列表中的全部元素。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(3)嵌套循環(huán)嵌套循環(huán)又稱多重循環(huán),是指循環(huán)結(jié)構(gòu)中包含其他循環(huán)結(jié)構(gòu)。二重循環(huán)是最常用的嵌套循環(huán)。在嵌套循環(huán)中外層循環(huán)稱為外循環(huán),內(nèi)層循環(huán)稱為內(nèi)循環(huán)。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)3break與continue語句break和continue語句在while循環(huán)和for循環(huán)中都可以使用,一般常與選擇結(jié)構(gòu)結(jié)合使用,當(dāng)滿足特定條件時(shí)跳出循環(huán)。在循環(huán)體內(nèi)使用break語句會(huì)直接跳出循環(huán),回到循環(huán)的頂端,并忽略continue之后的所有語句,提前進(jìn)入下一次循環(huán)。過多的break和continue語句會(huì)降低程序的可讀性。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2.4字符串字符串是使用單引號(hào)、雙引號(hào)引起來的若干的字符組成的集合,是Python中最常用的數(shù)據(jù)類型。其中單引號(hào)、雙引號(hào)可以互相嵌套,用來表示復(fù)雜字符串。1字符串創(chuàng)建使用“=”直接賦值創(chuàng)建字符串變量。字符串創(chuàng)建后就不能改變,如果想改變變量引用的字符串,只能創(chuàng)建新的字符串,然后使用變量引用新的字符串。字符串中有可能包含引號(hào),如果包含的是單引號(hào),則使用雙引號(hào)括起來;如果包含的是雙引號(hào),則使用單引號(hào)括起來;如果既有單引號(hào)又有雙引號(hào)就需要使用轉(zhuǎn)義字符。例如:Print("Ithink,\"why?,'what?'\"")Python3完全支持中文字符,默認(rèn)使用UTF8編碼格式。每一個(gè)數(shù)字、英文字母,漢字,都按一個(gè)字符進(jìn)行處理。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2字符串方法字符串是Python重要的數(shù)據(jù)類型,Python內(nèi)置了大量的函數(shù)支持字符串操作,可以使用dir()函數(shù)查看所有字符串操作函數(shù)列表,使用help()函數(shù)可以查看每個(gè)函數(shù)的幫助。字符串是一種Python序列,很多Python內(nèi)置函數(shù)也支持字符串操作,例如求最大值的max()方法,用來計(jì)算序列長(zhǎng)度的len()方法等。(1)find()和rfind()find()方法檢驗(yàn)字符串是否包含子字符串。如果包含,則返回開始的索引值,否則返回-1。語法格式如下:str.find(str,beg=0,end=len(string))其中str是指定檢索的字符串,beg是開始索引位置,默認(rèn)值為0,end是結(jié)束索引位置,默認(rèn)值為字符串的長(zhǎng)度。rfind()方法從右向左查詢,返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項(xiàng)則返回-1。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(2)index()和rindex()index()方法和rindex()方法用來返回一個(gè)字符串在另一個(gè)字符串指定范圍中首次和最后一次出現(xiàn)的位置,如果不存在就會(huì)拋出異常。Index方法語法格式如下:str.index(str,beg=0,end=len(string))str是指定檢索的字符串,beg是開始索引,默認(rèn)值為0,end是結(jié)束索引,默認(rèn)值為字符串的長(zhǎng)度。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(3)count()count()方法返回一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。語法格式如下:list.count(obj)obj是列表中要計(jì)數(shù)的對(duì)象,返回值是列表中出現(xiàn)obj的次數(shù)。在應(yīng)用的時(shí)候最好是把列表賦給一個(gè)變量,之后再用count()方法來操作。當(dāng)對(duì)象是一個(gè)嵌套的列表時(shí),要查找嵌套列表中的列表參數(shù),count()方法同樣可以完成。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)

(4)其他常見字符串方法split()方法指定字符為分隔符,從字符串左端開始,將原始字符串分割成多個(gè)字符串,并返回分割結(jié)果的列表。join()方法將列表中多個(gè)字符串進(jìn)行連接,并在相鄰兩個(gè)字符串之間插入指定字符。replace()方法用來替換字符串中指定字符。maketrans()方法用來生成字符映射表,translate()方法按映射表關(guān)系轉(zhuǎn)換字符串并替換其中的字符,組合使用這兩種方法可以同時(shí)處理多個(gè)不同的字符。lower()和upper()方法將字符串轉(zhuǎn)換為小寫、大寫。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2.5列表、元組與字典序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu),是一塊用來存放多個(gè)值的連續(xù)空間。常見的序列結(jié)構(gòu)包括字符串、列表、元組和集合等。所有類型的序列都可以進(jìn)行索引、分片、加乘等操作。其中列表、元組、字符串支持雙向索引,第一個(gè)元素下標(biāo)為0,第二個(gè)元素下標(biāo)為1,并以此類推;最后一個(gè)元素下標(biāo)為-1,倒數(shù)第二個(gè)元素下標(biāo)為-2,并以此類推。另外,Python還有與序列相關(guān)的內(nèi)置函數(shù),例如計(jì)算序列長(zhǎng)度、求最大和最小元素等。1列表列表是最常用的Python數(shù)據(jù)類型,是用中括號(hào)“[]”括起來的元素的集合。在Python中,一個(gè)列表中元素的數(shù)據(jù)類型可以各不相同,既可以為整數(shù)、實(shí)數(shù)、字符串等基本類型,也可以是列表、元組、字典等。列表中每個(gè)元素之間用逗號(hào)分隔,當(dāng)列表元素增加或刪除時(shí),列表對(duì)象自動(dòng)進(jìn)行擴(kuò)展或收縮內(nèi)存,從而保證各個(gè)元素之間沒有縫隙。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2元組元組與列表十分類似,但是元組創(chuàng)建后,內(nèi)容不能被修改。元組使用小括號(hào)“()”括起來,列表使用方括號(hào)“[]”括起來。元組中的數(shù)據(jù)一旦定義就不允許更改,因此沒有append()、extend()和insert()等方法,無法向元組中添加元素,也沒有remove()或pop()方法,無法對(duì)元組元素進(jìn)行刪除操作。元組讀取速度比列表快,因此如果定義了一系列常量值,需要對(duì)這些常量值進(jìn)行遍歷,則使用元組而不用列表。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(1)元組的創(chuàng)建通過使用圓括號(hào)“()”,圓括號(hào)里的每一個(gè)元素用逗號(hào)進(jìn)行分隔來創(chuàng)建一個(gè)元組,也可以使用內(nèi)建函數(shù)tuple()創(chuàng)建新元組。與列表相似,元組中的每一個(gè)元素可以是不同的數(shù)據(jù)類型。創(chuàng)建元組的語法格式如下:tuple_name=(element1,element2,element3,..)創(chuàng)建元組時(shí),如果只含有一個(gè)元素的元組,元素后面的逗號(hào)不能省略,否則解析器就會(huì)認(rèn)為該括號(hào)里面的內(nèi)容是一個(gè)表達(dá)式,而不是元組的元素。當(dāng)創(chuàng)建含多個(gè)元素的元組時(shí),最后一個(gè)元素后面的逗號(hào)可以省略。使用tuple函數(shù)可以轉(zhuǎn)換其他序列,創(chuàng)建元組。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(2)元組的訪問訪問元組和訪問列表類似,通過切片操作來實(shí)現(xiàn),其返回值也是一個(gè)對(duì)象或者多個(gè)對(duì)象的集合。元組的切片操作遵循正負(fù)索引規(guī)則,有一個(gè)開始索引和一個(gè)結(jié)束索引,如果沒指定這兩個(gè)索引,則默認(rèn)為序列的開始和結(jié)束位置。(3)元組組合元組中的元素值是不允許被修改的,但可以連接組合元組。(4)刪除元組元組中的元素值是不允許刪除的,但可以使用del語句刪除整個(gè)元組。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)3字典字典是用大括號(hào)“{}”括起來的鍵值對(duì)的集合,字典有鍵和值兩個(gè)屬性組成。字典的一個(gè)元素就是一個(gè)鍵值對(duì),通常用數(shù)字或者字符串作為鍵,值可以是任意類型的對(duì)象。每個(gè)鍵和它的值之間用冒號(hào)分隔,項(xiàng)之間用逗號(hào)分隔,字典中的鍵是唯一的,但是值并不唯一。如果把列表和元組當(dāng)作有序的對(duì)象集合類型,字典就是無序的對(duì)象集合類型。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(1)創(chuàng)建字典創(chuàng)建字典時(shí)將鍵值對(duì)用大括號(hào){}括起來,鍵值之間用冒號(hào)分隔,鍵值對(duì)之間用逗號(hào)分隔。

(2)訪問字典中的元素值與列表和元組不同,列表和元組根據(jù)索引來存取對(duì)象,字典則根據(jù)鍵來存取對(duì)象。

(3)添加字典元素

(4)修改字典元素

修改字典元組與添加字典元組的格式相似,不同的是[]為字典中已有的鍵。

(5)刪除字典元素

可以使用del或字典的pop方法來刪除字典元素,刪除字典元素時(shí),必須指定要?jiǎng)h除的元素的鍵。

(6)清空字典

使用clear()方法可以清空字典中所有的元素。

(7)刪除整個(gè)字典

使用del命令可以刪除整個(gè)字典。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)4序列的常用操作(1)索引索引是對(duì)每個(gè)序列元素分配一個(gè)位置編號(hào),所有的元素的編號(hào)從0開始遞增,通過編號(hào)可以對(duì)序列元素進(jìn)行訪問。從右邊開始索引時(shí),最右邊的一個(gè)元素的索引為-1,向左依次遞減。(2)分片索引用來對(duì)單個(gè)元素進(jìn)行訪問,分片可以對(duì)一定范圍內(nèi)的元素進(jìn)行訪問。分片通過冒號(hào)相隔的兩個(gè)索引來實(shí)現(xiàn),需要提供兩個(gè)索引作為邊界,第一個(gè)索引的元素是包含在分片內(nèi),而第二個(gè)則不包含在分片內(nèi),(3)序列相加使用“+”可以相加兩個(gè)序列,相加的兩個(gè)序列必須是同一種類型。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)(4)乘法用數(shù)字n乘以一個(gè)序列會(huì)生成新的序列,在新的序列中,原來的序列將會(huì)被重復(fù)n次,(5)成員資格in運(yùn)算符用來檢查一個(gè)值是否在序列中,如果在就返回Ture,如果不在就返回False。(6)長(zhǎng)度、最小值和最大值len()函數(shù)返回序列中所包含元素的數(shù)量,min()函數(shù)和max()函數(shù)分別返回序列中最大和最小的元素,創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)8.2.6正則表達(dá)式正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列句法規(guī)則,通常被用來檢索、替換某個(gè)模式的文本,是一種字符串處理的有力工具。正則表達(dá)式按照某種預(yù)定義的模式去匹配一類具有共同特征的字符串,主要用于字符串處理,可以快速準(zhǔn)確地完成復(fù)雜的查找、替換等要求。Python提供了re模塊,可以完成正則表達(dá)式操作所需要的基本功能。

re模塊中正則表達(dá)式由元字符及其不同組合來構(gòu)成,通過構(gòu)造正則表達(dá)式可以匹配任意字符串,并完成復(fù)雜的字符串處理任務(wù)。re模塊提供了Perl風(fēng)格的正則表達(dá)式模式,擁有全部的正則表達(dá)式功能。下面主要介紹re模塊中常用的正則表達(dá)式處理函數(shù)。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)1re.match函數(shù)re.match函數(shù)嘗試從字符串的起始位置匹配一個(gè)模式,如果匹配失敗,match()方法返回none,函數(shù)語法如下:re.match(pattern,string,flags=0)re.match函數(shù)的參數(shù)說明如表8-10所示。參數(shù)描述pattern匹配的正則表達(dá)式string要匹配的字符串flags標(biāo)志位,用于控制正則表達(dá)式的匹配方式表8-10函數(shù)參數(shù)說明創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)可以使用group()或groups()函數(shù)獲取匹配表達(dá)式,匹配對(duì)象的方法描述如表8-11所示。匹配對(duì)象方法描述group(num=0)匹配的整個(gè)表達(dá)式的字符串,可以一次輸入多個(gè)組號(hào),返回一個(gè)包含組所對(duì)應(yīng)值的元組。groups()返回包含所有小組字符串的元組。表8-11匹配對(duì)象方法描述創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.2語言基礎(chǔ)2re.search方法re.search方法掃描整個(gè)字符串并返回第一個(gè)成功匹配的對(duì)象,語法格式如下:re.search(pattern,string,flags=0)re.match函數(shù)的參數(shù)說明如表8-12所示。參數(shù)描述pattern匹配的正則表達(dá)式string要匹配的字符串flags標(biāo)志位,用于控制正則表達(dá)式的匹配方式表8-12search方法參數(shù)說明若匹配成功,re.search方法返回一個(gè)匹配的對(duì)象,否則返回None。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)函數(shù)是一種組織好的、可重復(fù)使用的、用來實(shí)現(xiàn)單一或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性和代碼的重復(fù)利用率。Python不僅提供了許多內(nèi)建函數(shù),比如print()函數(shù),用戶也可以自己創(chuàng)建函數(shù)完成某種特定功能。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)8.3.1函數(shù)定義函數(shù)定義規(guī)則如下:1)函數(shù)代碼塊以def關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)()。2)任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以定義參數(shù)。3)函數(shù)的第一行語句可以使用文檔字符串,用于存放函數(shù)說明。4)函數(shù)內(nèi)容以冒號(hào)起始,且需要縮進(jìn)。5)Return語句結(jié)束函數(shù),然后返回一個(gè)值給調(diào)用方,默認(rèn)為None。函數(shù)定義語法格式如下:deffunctionname(parameter):function_suitereturn[expression]關(guān)鍵字def引出函數(shù)定義,后接函數(shù)名和用小括號(hào)括起來的一系列參數(shù),最后是函數(shù)體。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)8.3.2函數(shù)調(diào)用定義函數(shù)時(shí)給函數(shù)指定一個(gè)名稱,以及函數(shù)里包含的參數(shù)和代碼塊結(jié)構(gòu)。當(dāng)函數(shù)的基本結(jié)構(gòu)完成后,可以通過另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接在提示符中執(zhí)行。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)8.3.3函數(shù)參數(shù)函數(shù)的輸入稱為參數(shù),函數(shù)的輸出稱為返回值。參數(shù)傳遞是將實(shí)參賦值給形參的過程。實(shí)參可以是常量、變量或表達(dá)式,實(shí)參的類型與形參兼容。def是函數(shù)定義的關(guān)鍵字,冒號(hào)表示函數(shù)定義的開始。函數(shù)參數(shù)列表可以為空,也可以包含多個(gè)參數(shù),參數(shù)之間使用逗號(hào)分隔。return語句返回函數(shù)的值并退出函數(shù),返回值可以是任何數(shù)據(jù)類型。return語句是可選的,可以在函數(shù)體內(nèi)任何地方出現(xiàn),表示函數(shù)調(diào)用執(zhí)行到此結(jié)束。如果函數(shù)中沒有return語句,則自動(dòng)返回None。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)函數(shù)參數(shù)的傳遞Python按值傳遞參數(shù),當(dāng)調(diào)用函數(shù)時(shí),將常量或變量的值傳遞給函數(shù)的參數(shù)。實(shí)參是指函數(shù)調(diào)用時(shí)傳遞進(jìn)去的參數(shù)值,Python實(shí)參分為關(guān)鍵字實(shí)參和位置實(shí)參。關(guān)鍵字實(shí)參是在調(diào)用函數(shù)時(shí),以name=value的形式傳遞參數(shù),name就是參數(shù)的名字,也稱為形參;位置實(shí)參就是只傳遞value的形式,這要靠實(shí)參的位置來匹配形參,關(guān)鍵字參數(shù)必須位于位置參數(shù)之后。函數(shù)定義完成后,可以直接使用函數(shù)名調(diào)用函數(shù),調(diào)用格式如下:函數(shù)名(實(shí)參列表)函數(shù)的實(shí)際參數(shù)按順序傳遞給函數(shù)的形式參數(shù),然后執(zhí)行函數(shù)體。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.3函數(shù)8.3.4返回值return語句退出函數(shù),選擇性地向調(diào)用方返回一個(gè)表達(dá)式。不帶參數(shù)值的return語句返回None。8.3.5變量作用域變量起作用的范圍稱為變量的作用域,兩種最基本的變量作用域是全局變量和局部變量。變量定義在函數(shù)內(nèi)部和外部,其作用域是不同的。全局變量與局部變量本質(zhì)區(qū)別就是作用域不同。定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,定義在函數(shù)外的擁有全局作用域。局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個(gè)程序范圍內(nèi)訪問。調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類Python是一門面向?qū)ο蟮恼Z言,在Python中創(chuàng)建一個(gè)類和對(duì)象比較容易,本章節(jié)將介紹Python的面向?qū)ο缶幊?。?chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類8.4.1類定義類的定義主要包括對(duì)象的屬性和方法。Python中類的聲明使用關(guān)鍵詞class,class之后是一個(gè)空格,然后是類的名字和冒號(hào),最后換行并定義類的內(nèi)部實(shí)現(xiàn)。類名的首字母一般要大寫,可以按照自己的習(xí)慣定義類名。類在定義時(shí)可以提供一個(gè)可選父類,如果沒有基類,那默認(rèn)object作為基類。類的定義語法格式如下:class類名:成員變量成員函數(shù)創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類類的所有實(shí)例方法都必須至少有一個(gè)名為self的參數(shù),并且必須是方法的第一個(gè)形參,self參數(shù)代表將來要?jiǎng)?chuàng)建的對(duì)象本身。在類的實(shí)例方法中訪問實(shí)例屬性時(shí)需要以self為前綴,但在外部通過對(duì)象名調(diào)用對(duì)象方法時(shí)并不需要傳遞這個(gè)參數(shù),如果在外部通過類名調(diào)用對(duì)象方法則需要顯式為self參數(shù)傳值。屬于實(shí)例的數(shù)據(jù)成員一般是指在構(gòu)造函數(shù)__init__()中定義的,定義和使用時(shí)必須以self作為前綴,屬于類的數(shù)據(jù)成員是在類中所有方法之外定義的。在主程序中,實(shí)例屬性只能通過對(duì)象名訪問,而類屬性可以通過類名或?qū)ο竺L問。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類8.4.2類方法在類中定義的方法可以粗略分為四大類:公有方法、私有方法、靜態(tài)方法和類方法。公有方法、私有方法都屬于對(duì)象,私有方法的名字以兩個(gè)下劃線“__”開始。每個(gè)對(duì)象都有自己的公有方法和私有方法,在這兩類方法中可以訪問屬于類和對(duì)象的成員。公有方法通過對(duì)象名直接調(diào)用,私有方法不能通過對(duì)象名直接調(diào)用,只能在屬于對(duì)象的方法中通過self調(diào)用或在外部通過Python支持的特殊方式來調(diào)用。如果通過類名來調(diào)用屬于對(duì)象的公有方法,需要顯式為該方法的self參數(shù)傳遞一個(gè)對(duì)象名,用來明確指定訪問哪個(gè)對(duì)象的數(shù)據(jù)成員。靜態(tài)方法和類方法都可以通過類名和對(duì)象名調(diào)用,但不能直接訪問屬于對(duì)象的成員,只能訪問屬于類的成員,靜態(tài)方法可以沒有參數(shù)。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類8.4.3繼承與多態(tài)1繼承繼承是為代碼復(fù)用和設(shè)計(jì)復(fù)用而設(shè)計(jì)的,是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特性之一。在繼承關(guān)系中,已有的、設(shè)計(jì)好的類稱為父類或基類,新設(shè)計(jì)的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。Python支持多繼承,如果父類中有相同的方法名,而在子類中使用時(shí)沒有指定父類名,則Python解釋器將從左向右按順序進(jìn)行搜索。單繼承語法格式如下:class<類名>(父類名)<語句>多繼承語法格式如下:class類名(父類1,父類2,....,父類n)<語句1>創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類2多態(tài)多態(tài)是指基類的同一個(gè)方法在不同派生類對(duì)象中具有不同的表現(xiàn)和行為。派生類繼承了基類行為和屬性之后,還會(huì)增加某些特定的行為和屬性,同時(shí)還可能會(huì)對(duì)繼承來的某些行為進(jìn)行一定的改變,這都是多態(tài)的表現(xiàn)形式。Python大多數(shù)運(yùn)算符可以作用于多種不同類型的操作數(shù),并且對(duì)于不同類型的操作數(shù)往往有不同的表現(xiàn),是通過特殊方法與運(yùn)算符重載實(shí)現(xiàn)的。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類8.4.4應(yīng)用舉例下面通過一個(gè)簡(jiǎn)單的學(xué)生教師類示例介紹類的定義和使用。1定義類定義類是通過class關(guān)鍵字,class后面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個(gè)類繼承下來的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會(huì)繼承的類。創(chuàng)建類時(shí),可以定義一個(gè)特定的方法,名為__init__(),只要?jiǎng)?chuàng)建這個(gè)類的一個(gè)實(shí)例就會(huì)運(yùn)行這個(gè)方法??梢韵騙_init__()方法傳遞參數(shù),這樣創(chuàng)建對(duì)象時(shí)就可以把屬性設(shè)置為希望的值,__init__()這個(gè)方法會(huì)在創(chuàng)建對(duì)象時(shí)完成初始化,同時(shí)第一個(gè)參數(shù)必須為self。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類首先定義Student類:classStudent(object):def__init__(self,sno,sname,ssex,sage,sdatamaing):self.sNo=snoself.sName=snameself.sSex=ssexself.sAge=sageself.sDataMaing=sdatamaingsNO表示學(xué)號(hào),sName表示姓名,sSex表示性別,sAge表示年齡,sDataMaing表示數(shù)據(jù)挖掘課的成績(jī)。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類然后定義Teacher類:classTeacher(object):def__init__(self,tno,tname,tsex,tage,title):self.tNo=tnoself.tName=tnameself.tSex=tsexself.tAge=tageself.tTitle=titletNO表示教師工號(hào),tName表示教師姓名,tSex表示教師性別,tAge表示教師年齡,tTitle表示職稱。創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類2類方法成員(1)Student類:getNo()獲得學(xué)生學(xué)號(hào);defgetNo(self):return(self.sNo)getName()獲得學(xué)生姓名;defgetName(self):return(self.sName)getSex()獲得學(xué)生性別;defgetSex(self):return(self.sSex)getAge()獲得學(xué)生年齡;defgetAge(self):return(self.sAge)getDataMaing()獲得學(xué)生數(shù)據(jù)挖據(jù)課的成績(jī);defgetDataMaing(self):return(self.sDataMaing)創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類(2)Teacher類:getNo()獲得教師工號(hào);

defgetNo(self):return(self.tNo)getName()獲得教師姓名;defgetName(self):return(self.tName)getSex()獲得教師性別;defgetSex(self):return(self.tSex)getAge()獲得教師年齡;defgetAge(self):return(self.tAge)getTitle()獲得教師職稱;defgetTitle(self):return(self.tTitle)創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類3類實(shí)例定義好了Student類,就可以根據(jù)該類創(chuàng)建出Student的實(shí)例,創(chuàng)建實(shí)例是通過類名+()實(shí)現(xiàn)的。a=Student("201102064","李明","男","22","94")以上代碼創(chuàng)建一個(gè)學(xué)生實(shí)例,學(xué)號(hào)201102064,姓名李明,性別男,年齡22,數(shù)據(jù)挖掘成績(jī)94。print(a.getNo())print(a.getName())print(a.getSex())print(a.getAge())print(a.getDataMaing())輸出結(jié)果為:201102064李明男2294創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類創(chuàng)建一個(gè)教師實(shí)例,工號(hào)為20010513,姓名為張正,性別男,年齡51,職稱為教授。b=Teacher("20010513","張正","男","51","教授")print(b.getNo())print(b.getName())print(b.getSex())print(b.getAge())print(b.getTitle())輸出結(jié)果:20010513張正男51教授創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類4類對(duì)象創(chuàng)建6個(gè)學(xué)生類的對(duì)象,輸出每個(gè)學(xué)生的信息,計(jì)算并輸出這6個(gè)學(xué)生數(shù)據(jù)挖據(jù)課的成績(jī),以及計(jì)算并輸出數(shù)據(jù)挖據(jù)課的成績(jī)的平均成績(jī)、最高成績(jī)、最低成績(jī)。首先創(chuàng)建6個(gè)學(xué)生實(shí)例:s1=Student("201602001","李明","男","22",94)s2=Student("201602002","張亮","男","22",86)s3=Student("201602003","趙紅","女","21",99)s4=Student("201602004","李鵬","男","22",91)s5=Student("201602005","孫明","男","23",84)

然后創(chuàng)建一個(gè)學(xué)生列表,將六位學(xué)生信息放入列表中:Stu=[s1,s2,s3,s4,s5]創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類使用for循環(huán)輸出每位學(xué)生的信息,使用類方法獲得學(xué)生的信息:forninrange(0,5):print(Stu[n].getNo()+Stu[n].getName()+Stu[n].getSex()+Stu[n].sAge+str(Stu[n].getDataMaing()))其中g(shù)etDataMaing()返回為int類型,需要強(qiáng)制轉(zhuǎn)換為str類型。輸出結(jié)果為:201602001李明男2294201602002張亮男2286201602003趙紅女2199201602004李鵬男2291201602005孫明男2384創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類直接調(diào)用類成員sDataMaing獲得每位學(xué)生的成績(jī),使用循環(huán)計(jì)算學(xué)生的平均成績(jī):total=0forninrange(0,5):total=Stu[n].sDataMaing+totalaverage=total/5Print("平均成績(jī)?yōu)椋?)print(average)

最終輸出結(jié)果為:平均成績(jī)?yōu)椋?0.8

創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類計(jì)算所有學(xué)生中的最高成績(jī):forninrange(0,5):if(Stu[n].sDataMaing>mix):mix=Stu[n].sDataMaingprint("最高成績(jī)?yōu)椋?)print(mix)輸出結(jié)果為:

最高成績(jī)?yōu)椋?9計(jì)算所有學(xué)生中的最低成績(jī):

forninrange(0,5):if(Stu[n].sDataMaing<mix):mun=Stu[n].sDataMaingprint("最低成績(jī)?yōu)椋?)print(mun)輸出結(jié)果為:

最低成績(jī)?yōu)椋?4創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類5類繼承在學(xué)生類Student和教師類Teacher基礎(chǔ)上,再派生出一個(gè)助教類TeachAssistant,一個(gè)助教同時(shí)具有教師和學(xué)生的特征,并增加屬性工資wage。TeachAssistant類同時(shí)繼承學(xué)生類student和教師類Teacher,繼承允許子類從父類那里獲得屬性和方法,同時(shí)子類可以添加新方法或者重載父類中的任何方法。classTeachAssistant(Teacher,Student):def__init__(self,tno,tname,tsex,tage,title,sdatamaing,wage):Teacher.__init__(self,tno,tname,tsex,tage,title)Student.__init__(self,tno,tname,tsex,tage,sdatamaing)self.Wage=wage創(chuàng)新與貢獻(xiàn)研究意義選題背景第八章8.4類TeachAssistant類的__init__方法同時(shí)繼承Student類和Teacher類的__init__構(gòu)造方法,同時(shí)具有自己獨(dú)特的屬性wage,然后創(chuàng)建一個(gè)TeachAssistant類實(shí)例:d=TeachAssistant("20090511","王梅","女","30","助教",0,5000)print(d.tName)print(d.sName)輸出結(jié)果都為王梅,可知TeachAssistant同時(shí)繼承了父類的tName屬性與sName屬性。

print(d.getTitle())print(d.getDataMaing())輸出結(jié)果為:助教0。可知TeachAssistant類又分別繼承了父類的getTitle()方法與getDataMaing

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論