版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
機器學習與大數(shù)據(jù)技術第八章基礎知識語言基礎函數(shù)類Python基礎文件創(chuàng)新與貢獻研究意義選題背景第八章Python是由GuidovanRossum于九十年代初,在荷蘭國家數(shù)學和計算機科學研究所設計和實現(xiàn)。經(jīng)過20多年的發(fā)展,Python已經(jīng)成為深度學習和機器學習最好的編程語言之一,也是計算機視覺、人工智能等優(yōu)選的語言和編程工具。Python特點是簡單易學,功能強大,可移植性和可擴展性強,開源免費,支持面向?qū)ο缶幊獭?.1基礎知識8.1基礎知識創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識8.1.1Python安裝與使用目前,Python版本有兩個不同的版本:Python2和較新的Python3。Python的開發(fā)者一直致力于豐富和強化其功能。Python的安裝很簡單,打開Python官方主頁https://www./后,選擇適合自己的版本下載并安裝。如果使用的是Linux系統(tǒng),例如Ubuntu,那么可能已經(jīng)預裝了某個版本的Python,可以根據(jù)自己的需要進行升級。Python自帶了一個在終端窗口中運行的解釋器IDLE,無需保存整個程序就能夠運行Python代碼片段。IDLE使用交互式編程模式,直接在提示符“>>>”后面輸入相應的命令并回車執(zhí)行即可,如果執(zhí)行順利,就可以返回執(zhí)行結(jié)果,否則會拋出異常。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識8.1.2編碼規(guī)范(1)縮進
Python程序依靠代碼塊的縮進來體現(xiàn)代碼之間的邏輯關系。對于類定義、函數(shù)定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)以及異常處理結(jié)構(gòu),行尾的冒號以及下一行的縮進表示一個代碼塊的開始,而縮進結(jié)束則代表一個代碼塊的結(jié)束。并且在編寫程序時,同一個級別的代碼塊的縮進量必須相同。(2)注釋注釋對于程序理解和團隊合作開發(fā)具有非常重要的意義。一個可維護性和可讀性都很強的程序一般會包含30%以上的注釋。Python中常用的注釋方式主要有兩種:以符號#開始,表示本行#之后的內(nèi)容為注釋;包含在一對三引號之間且不屬于任何語句的內(nèi)容將被解釋器認為是注釋。(3)每個import語句只導入一個模塊,盡量避免同時導入多個模塊。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識(4)如果一行語句太長,可以在行尾使用續(xù)行符“\”來表示下面緊接的一行仍屬于當前語句。(5)使用必要的空格與空行增強代碼的可讀性。一般來說,運算符兩側(cè)、函數(shù)參數(shù)之間、逗號兩側(cè)使用空格進行分隔。(6)適當使用異常處理結(jié)構(gòu)提高程序容錯性和健壯性,但不能過多依賴異常處理結(jié)構(gòu),仍然需要適當?shù)娘@式判斷。
創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識8.1.3模塊導入Python默認安裝僅包含部分基本或核心模塊,但用戶可以很方便地安裝其他擴展模塊,pip是管理擴展模塊的重要工具。在Python啟動時,僅加載了很少的一部分模塊,在需要時由程序員顯式地加載其他模塊。這樣可以減小程序運行的壓力,僅加載真正需要的模塊和功能,且具有很強的可擴展性。模塊中可以定義變量、函數(shù)和類,也可以包含可執(zhí)行語句。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識1導入方法當完成某些特定功能的一段程序需要反復執(zhí)行時,可以將它以文件的形式存儲起來構(gòu)成一個模塊。定義好模塊之后,使用import語句引入模塊,from方法導入模塊,通過下面三個步驟來完成:在Python模塊加載路徑中查找相應的模塊文件;將模塊文件編譯成中間代碼;執(zhí)行模塊文件中的代碼。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識2標準庫模塊
標準庫是Python自帶的開發(fā)包,包含的模塊非常多,一些常用的模塊如表8-1所示。
表8-1Python常用標準庫序號模塊名稱模塊的功能1sys獲取命令行的參數(shù)、程序的路徑和當前系統(tǒng)等信息的功能。2osos模塊包含基本的操作系統(tǒng)功能。
3
globPython自帶的一個文件操作相關模塊,用它可以查找符合自己目的的文件。它的主要方法就是glob,該方法返回所有匹配的文件路徑列表。4math實現(xiàn)基本的數(shù)據(jù)運算。5random用于生成隨機數(shù)。6platform獲取所用操作系統(tǒng)的詳細信息和與Python相關的信息。7subprocess用來生成子進程,并可以通過管道連接它們的輸入/輸出錯誤,以及獲得它們的返回值。8Queue提供隊列操作的模塊。9StringIO實現(xiàn)在內(nèi)存緩沖區(qū)中讀寫數(shù)據(jù)。10time提供各種關于時間的函數(shù)。11datetime日期格式化操作。使用help()函數(shù)可以查看函數(shù)或模塊用途的詳細說明,顯示幫助信息。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識8.1.4異常處理異常是指程序運行時發(fā)生錯誤。引發(fā)錯誤的原因有很多,例如下標越界、除零、網(wǎng)絡異常、磁盤空間不足、文件不存在等等。異常處理就是系統(tǒng)處理這些非正常的狀態(tài),保證程序不因運行這些錯誤而導致崩潰。Python使用異常對象表示異常,若程序在編譯或運行過程中發(fā)生錯誤,就會拋出異常對象,程序進入異常處理。如果沒有處理這些異常對象,程序就會終止然后執(zhí)行回溯。創(chuàng)新與貢獻研究意義選題背景第八章8.1基礎知識3異常的回溯當異常發(fā)生時,程序會回溯異常,返回大量錯誤信息。這可能會給程序員定位及糾錯帶來困難,這時可以使用sys模塊來回溯最近一次異常。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2語言基礎8.2.1基本數(shù)據(jù)類型1標識符標識符用來標識函數(shù)名、變量名、常量名、數(shù)組名和文件名等有效字符序列。標識符的命名規(guī)則如下;(1)標識符可以包含字母、數(shù)字和下劃線,但不能以數(shù)字開頭;(2)標識符區(qū)分大小寫;(3)標識符不能與保留字同名。Python中的保留字不能用作常數(shù)或變數(shù),或任何其他標識符名稱,所有的關鍵字只包含小寫字母,所有保留字如下:
andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2變量與常量變量是在程序運行過程中,值可以改變的量。所有的變量對應唯一的變量名,變量名和變量值是兩個不同的概念,變量在內(nèi)存中占有一定的存儲單元,變量值就存儲在內(nèi)存單元中。變量的命名規(guī)則與標識符的命名規(guī)則相同。變量名區(qū)分大小寫,如變量Machine和machine是兩個不同的變量。Python是強類型編程語言,解釋器會根據(jù)代碼中的賦值或運算自動判斷變量類型,在定義時不需要預先聲明變量的類型。同時Python還是一種動態(tài)類型語言,變量的類型也可以隨時發(fā)生變化。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎Python有自動內(nèi)存管理的功能,會自動跟蹤所有的值,然后刪除沒有任何變量指向的值,因此在編程時不需要考慮內(nèi)存管理的問題。Python中變量按照作用域可以分為局部變量和全局變量。局部變量是在函數(shù)內(nèi)定義的變量,其作用域只有函數(shù)內(nèi)部,局部變量的生命周期伴隨著函數(shù)代碼塊的結(jié)束而結(jié)束。全局變量又稱外部變量,是在函數(shù)外部定義的變量。全局變量可以被文件內(nèi)任何函數(shù)和外部文件訪問,其作用域是整個程序。global保留字可以用于引用全局變量。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎3數(shù)字Python中數(shù)字數(shù)據(jù)類型用于存儲數(shù)值,其數(shù)值是不允許改變的。因此如果改變數(shù)字數(shù)據(jù)的值,系統(tǒng)將為數(shù)字重新分配內(nèi)存空間。Python中數(shù)字類型分為四種:整型int,又被稱為整型或整數(shù),只有正或負整數(shù),不包含小數(shù)點,例如:1234、-1234。整數(shù)類型有一定的位數(shù)限制,在32位機器上,整數(shù)的位數(shù)為32位,在64位機器上,整數(shù)的位數(shù)為64位。長整型long,無限大小的整數(shù),最后一位是大寫或小寫的字母L。浮點型float,
由整數(shù)部分與小數(shù)部分組成,浮點型也可以使用科學計數(shù)法表示。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2.2運算符與表達式與其他計算機語言一樣,Python支持大多數(shù)算術運算符、關系運算符等,并遵循與大多數(shù)語言一樣的運算符優(yōu)先級。Python還有一些特有的運算符,例如成員測試運算符、集合運算符、同一性測試運算符等。
Python運算符包括算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符、成員運算符和身份運算符。Python表達式是將不同類型的數(shù)據(jù)(常量、變量、函數(shù))用運算符按照一定得規(guī)則連接起來的式子。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎1算術運算符和算術表達式Python算術運算符包括四則運算符、求模預算符和冪運算符等,如表8-2所示。算術運算符表達式說明+x+y加法運算-x-
y減法運算*x*y乘法運算/x/y除法運算%x%y求模運算**x**y冪運算//x//y兩數(shù)相除向下取整Python中的除法運算采用浮點數(shù)計算,x/y運算返回的結(jié)果是浮點類型。“%”為取模運算,x%y的運算結(jié)果是x除以y得到余數(shù)。操作符“//”可以從兩數(shù)相除中向下取整得到一個整數(shù),丟棄小數(shù)部分。表8-2算術運算符表達式與說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2關系運算符和關系表達式Python中各種關系運算符如表8-3所示,運算結(jié)果為布爾型True或False。運算符表達式說明==a==b等于,比較對象是否相等!=或<>
a!=ba<>b不等于,比較兩個對象是否不相等>
a>b大于,比較a是否大于b<
a<b小于,比較a是否小于b>=a>=b大于等于,比較a是否大于或者等于b<=a<=b小于等于,比較a是否小于或者等于b表8-3關系運算符表達式和說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎3邏輯運算符與邏輯運算表達式Python中邏輯運算符包括與and、或or、非not,如表8-4所示。運算符表達式說明andaandb邏輯與oraorb邏輯或notnota邏輯非表8-4邏輯運算符表達式和說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎4位運算符和位運算表達式
Python按位運算符把數(shù)字按照二進制來進行計算,如表8-5所示。運算符表達式說明&a&b按位與運算符:參與運算的兩個數(shù),如果對應的二進制位都為1,則該位的運算結(jié)果為1,否則為0|a|b按位或運算符:參與運算的兩個數(shù),只要其中一個數(shù)對應的二進位為1時,則運算結(jié)果就為1^a
^b按位異或運算符:當兩個數(shù)對應的二進位不同時,結(jié)果為1,否則為0~~a按位取反運算符:數(shù)字每個二進制位進行取反操作,即把1變?yōu)?,把0變?yōu)?<<
a<<2左移動運算符:運算數(shù)的各二進位全部左移若干位,由"<<"右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0>>
a>>2右移動運算符:運算數(shù)的各二進位全部右移若干位,">>"右邊的數(shù)指定移動的位數(shù)表8-5位運算符表達式和說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎位運算符簡單計算如表8-6所示。運算操作結(jié)果a&b00111100&10001110
0000110012a|b00111000|00001101
0011110161a^b00111111^00001110
0011000149~a~00111100
11000011-61(有符號二進制數(shù)的補碼)a<<200111100<<211110000240a>>200111100>>2->0000111115表8-6位運算符計算實例創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎5賦值運算符與賦值表達式賦值語句是Python中最常用的運算語句,賦值語句最基本格式為:變量=對象?!?”運算符將賦值號右邊對象的值賦值給賦值號左邊的變量?!?=”的作用是將賦值號右邊的變量或值與賦值號左邊的變量或值求和,再賦值給賦值號左邊的變量,其他賦值運算符與“+=”類似。賦值運算符表達式及說明如表8-7所示。運算符表達式說明=z=x+y將x+y的運算結(jié)果賦值給z+=z+=x等價于z=z+x-=z-=x等價于z=z-x*=z*=x等價于z=z*x/=z/=x等價于z=z/x%=z%=x等價于z=z%x//=z//=x等價于z=z**x**=z**=x等價于z=z//x表8-7賦值運算符表達式和說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎6成員運算符與成員表達式Python中成員運算符判斷一個元素是否在一個指定序列中,包括in與notin,如表8-8所示。運算符表達式說明inainb如果在指定的序列b中找到值返回True,否則返回Falsenotinanotinb如果在指定的序列b中沒有找到值返回True,否則返回False表8-8成員運算符表達式和說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎7轉(zhuǎn)義字符如果想要在字符中使用特殊字符,需要使用轉(zhuǎn)義字符,可以通過反斜杠“\”來實現(xiàn),常用的轉(zhuǎn)義字符用法如表8-9所示。轉(zhuǎn)義字符描述\(在行尾時)續(xù)行符\\反斜杠符號\'單引號\"雙引號\a響鈴\b退格\e轉(zhuǎn)義\000空\n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁\oyy八進制數(shù),yy代表的字符,例如:\o12代表換行\(zhòng)xyy十六進制數(shù),yy代表的字符,例如:\x0a代表換行\(zhòng)other其它的字符以普通格式輸出表8-9常用轉(zhuǎn)義字符用法創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2.3選擇與循環(huán)1選擇語句選擇語句通過判斷某些特定條件是否滿足,執(zhí)行兩個或多個分支中的某個分支,決定下一步程序的執(zhí)行流程,是一種非常重要的控制結(jié)構(gòu)。常見的選擇語句有單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)、多分支選擇結(jié)構(gòu)等,語言形式靈活多變,使用時根據(jù)具體的需求選擇合適的語句。Python中條件分支語句有if語句、ifelse語句和ifelif語句。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(1)單分支結(jié)構(gòu)單分支選擇結(jié)構(gòu)是最簡單的選擇結(jié)構(gòu)。其中表達式后面的冒號“:”表示一個語句塊的開始,是不可缺少的,語句格式如下:if表達式:執(zhí)行語句塊語句功能:當判定條件為真時,執(zhí)行語句塊;條件為假時,不執(zhí)行語句塊。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(2)雙分支結(jié)構(gòu)雙分支選擇結(jié)構(gòu)的語句格式如下:if表達式:執(zhí)行語句塊1else:執(zhí)行語句塊2語句功能:當表達式為真時,執(zhí)行語句塊1,否則執(zhí)行語句塊2。其中if語句后面緊跟表達式和冒號,else語句后無表達式但需要冒號。if和else后語句塊不需要左右花括號。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(3)多分支結(jié)構(gòu)多分支選擇結(jié)構(gòu)可以實現(xiàn)更為復雜的邏輯,語句格式如下:if表達式1:執(zhí)行語句塊1elseif表達式2:執(zhí)行語句塊2elseif
表達式3:執(zhí)行語句塊3…………else:
執(zhí)行語句塊n語句功能:如果表達式1成立,則執(zhí)行語句塊1;當表達式1不成立時,程序流向下依次判斷,如果表達式2成立則執(zhí)行語句塊2,并以此類推,否則最終執(zhí)行語句塊n。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2循環(huán)語句在Python中可以使用循環(huán)語句有規(guī)律地反復執(zhí)行某些操作,解決一些實際應用。Python中的循環(huán)語句有while循環(huán)和for循環(huán)。當循環(huán)次數(shù)未知時,一般使用while循環(huán);當循環(huán)次數(shù)已知時,一般使用for循環(huán)。Python中還有幾個循環(huán)控制語句break、continue和pass。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(1)while循環(huán)while循環(huán)語句的基本形式如下:while表達式:循環(huán)體循環(huán)體可以是單個語句或語句塊,判斷條件可以是任意表達式,其中任何非零、或非空的值均為真。語句功能:當給定表達式為真時,執(zhí)行循環(huán)體中語句或者語句塊,否則退出循環(huán)體。需要注意的是程序會先判斷表達式是否成立,然后執(zhí)行循環(huán)體。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(2)for循環(huán)for循環(huán)也稱為計數(shù)循環(huán),通常用于遍歷序列、集合和映射對象等。語句的基本形式如下:for變量in序列或迭代對象:
循環(huán)體語句功能:for循環(huán)語句每次循環(huán)時,判斷變量是否還在序列或迭代對象中。如果仍在序列中,取出該值提供給循環(huán)體內(nèi)的語句使用;如果不在序列中,則循環(huán)結(jié)束。下面的代碼使用for循環(huán)遍歷打印一個列表中的全部元素。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(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)新與貢獻研究意義選題背景第八章8.2語言基礎3break與continue語句break和continue語句在while循環(huán)和for循環(huán)中都可以使用,一般常與選擇結(jié)構(gòu)結(jié)合使用,當滿足特定條件時跳出循環(huán)。在循環(huán)體內(nèi)使用break語句會直接跳出循環(huán),回到循環(huán)的頂端,并忽略continue之后的所有語句,提前進入下一次循環(huán)。過多的break和continue語句會降低程序的可讀性。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2.4字符串字符串是使用單引號、雙引號引起來的若干的字符組成的集合,是Python中最常用的數(shù)據(jù)類型。其中單引號、雙引號可以互相嵌套,用來表示復雜字符串。1字符串創(chuàng)建使用“=”直接賦值創(chuàng)建字符串變量。字符串創(chuàng)建后就不能改變,如果想改變變量引用的字符串,只能創(chuàng)建新的字符串,然后使用變量引用新的字符串。字符串中有可能包含引號,如果包含的是單引號,則使用雙引號括起來;如果包含的是雙引號,則使用單引號括起來;如果既有單引號又有雙引號就需要使用轉(zhuǎn)義字符。例如:Print("Ithink,\"why?,'what?'\"")Python3完全支持中文字符,默認使用UTF8編碼格式。每一個數(shù)字、英文字母,漢字,都按一個字符進行處理。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2字符串方法字符串是Python重要的數(shù)據(jù)類型,Python內(nèi)置了大量的函數(shù)支持字符串操作,可以使用dir()函數(shù)查看所有字符串操作函數(shù)列表,使用help()函數(shù)可以查看每個函數(shù)的幫助。字符串是一種Python序列,很多Python內(nèi)置函數(shù)也支持字符串操作,例如求最大值的max()方法,用來計算序列長度的len()方法等。(1)find()和rfind()find()方法檢驗字符串是否包含子字符串。如果包含,則返回開始的索引值,否則返回-1。語法格式如下:str.find(str,beg=0,end=len(string))其中str是指定檢索的字符串,beg是開始索引位置,默認值為0,end是結(jié)束索引位置,默認值為字符串的長度。rfind()方法從右向左查詢,返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項則返回-1。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(2)index()和rindex()index()方法和rindex()方法用來返回一個字符串在另一個字符串指定范圍中首次和最后一次出現(xiàn)的位置,如果不存在就會拋出異常。Index方法語法格式如下:str.index(str,beg=0,end=len(string))str是指定檢索的字符串,beg是開始索引,默認值為0,end是結(jié)束索引,默認值為字符串的長度。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(3)count()count()方法返回一個字符串在另一個字符串中出現(xiàn)的次數(shù)。語法格式如下:list.count(obj)obj是列表中要計數(shù)的對象,返回值是列表中出現(xiàn)obj的次數(shù)。在應用的時候最好是把列表賦給一個變量,之后再用count()方法來操作。當對象是一個嵌套的列表時,要查找嵌套列表中的列表參數(shù),count()方法同樣可以完成。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎
(4)其他常見字符串方法split()方法指定字符為分隔符,從字符串左端開始,將原始字符串分割成多個字符串,并返回分割結(jié)果的列表。join()方法將列表中多個字符串進行連接,并在相鄰兩個字符串之間插入指定字符。replace()方法用來替換字符串中指定字符。maketrans()方法用來生成字符映射表,translate()方法按映射表關系轉(zhuǎn)換字符串并替換其中的字符,組合使用這兩種方法可以同時處理多個不同的字符。lower()和upper()方法將字符串轉(zhuǎn)換為小寫、大寫。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2.5列表、元組與字典序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu),是一塊用來存放多個值的連續(xù)空間。常見的序列結(jié)構(gòu)包括字符串、列表、元組和集合等。所有類型的序列都可以進行索引、分片、加乘等操作。其中列表、元組、字符串支持雙向索引,第一個元素下標為0,第二個元素下標為1,并以此類推;最后一個元素下標為-1,倒數(shù)第二個元素下標為-2,并以此類推。另外,Python還有與序列相關的內(nèi)置函數(shù),例如計算序列長度、求最大和最小元素等。1列表列表是最常用的Python數(shù)據(jù)類型,是用中括號“[]”括起來的元素的集合。在Python中,一個列表中元素的數(shù)據(jù)類型可以各不相同,既可以為整數(shù)、實數(shù)、字符串等基本類型,也可以是列表、元組、字典等。列表中每個元素之間用逗號分隔,當列表元素增加或刪除時,列表對象自動進行擴展或收縮內(nèi)存,從而保證各個元素之間沒有縫隙。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2元組元組與列表十分類似,但是元組創(chuàng)建后,內(nèi)容不能被修改。元組使用小括號“()”括起來,列表使用方括號“[]”括起來。元組中的數(shù)據(jù)一旦定義就不允許更改,因此沒有append()、extend()和insert()等方法,無法向元組中添加元素,也沒有remove()或pop()方法,無法對元組元素進行刪除操作。元組讀取速度比列表快,因此如果定義了一系列常量值,需要對這些常量值進行遍歷,則使用元組而不用列表。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(1)元組的創(chuàng)建通過使用圓括號“()”,圓括號里的每一個元素用逗號進行分隔來創(chuàng)建一個元組,也可以使用內(nèi)建函數(shù)tuple()創(chuàng)建新元組。與列表相似,元組中的每一個元素可以是不同的數(shù)據(jù)類型。創(chuàng)建元組的語法格式如下:tuple_name=(element1,element2,element3,..)創(chuàng)建元組時,如果只含有一個元素的元組,元素后面的逗號不能省略,否則解析器就會認為該括號里面的內(nèi)容是一個表達式,而不是元組的元素。當創(chuàng)建含多個元素的元組時,最后一個元素后面的逗號可以省略。使用tuple函數(shù)可以轉(zhuǎn)換其他序列,創(chuàng)建元組。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(2)元組的訪問訪問元組和訪問列表類似,通過切片操作來實現(xiàn),其返回值也是一個對象或者多個對象的集合。元組的切片操作遵循正負索引規(guī)則,有一個開始索引和一個結(jié)束索引,如果沒指定這兩個索引,則默認為序列的開始和結(jié)束位置。(3)元組組合元組中的元素值是不允許被修改的,但可以連接組合元組。(4)刪除元組元組中的元素值是不允許刪除的,但可以使用del語句刪除整個元組。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎3字典字典是用大括號“{}”括起來的鍵值對的集合,字典有鍵和值兩個屬性組成。字典的一個元素就是一個鍵值對,通常用數(shù)字或者字符串作為鍵,值可以是任意類型的對象。每個鍵和它的值之間用冒號分隔,項之間用逗號分隔,字典中的鍵是唯一的,但是值并不唯一。如果把列表和元組當作有序的對象集合類型,字典就是無序的對象集合類型。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(1)創(chuàng)建字典創(chuàng)建字典時將鍵值對用大括號{}括起來,鍵值之間用冒號分隔,鍵值對之間用逗號分隔。
(2)訪問字典中的元素值與列表和元組不同,列表和元組根據(jù)索引來存取對象,字典則根據(jù)鍵來存取對象。
(3)添加字典元素
(4)修改字典元素
修改字典元組與添加字典元組的格式相似,不同的是[]為字典中已有的鍵。
(5)刪除字典元素
可以使用del或字典的pop方法來刪除字典元素,刪除字典元素時,必須指定要刪除的元素的鍵。
(6)清空字典
使用clear()方法可以清空字典中所有的元素。
(7)刪除整個字典
使用del命令可以刪除整個字典。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎4序列的常用操作(1)索引索引是對每個序列元素分配一個位置編號,所有的元素的編號從0開始遞增,通過編號可以對序列元素進行訪問。從右邊開始索引時,最右邊的一個元素的索引為-1,向左依次遞減。(2)分片索引用來對單個元素進行訪問,分片可以對一定范圍內(nèi)的元素進行訪問。分片通過冒號相隔的兩個索引來實現(xiàn),需要提供兩個索引作為邊界,第一個索引的元素是包含在分片內(nèi),而第二個則不包含在分片內(nèi),(3)序列相加使用“+”可以相加兩個序列,相加的兩個序列必須是同一種類型。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎(4)乘法用數(shù)字n乘以一個序列會生成新的序列,在新的序列中,原來的序列將會被重復n次,(5)成員資格in運算符用來檢查一個值是否在序列中,如果在就返回Ture,如果不在就返回False。(6)長度、最小值和最大值len()函數(shù)返回序列中所包含元素的數(shù)量,min()函數(shù)和max()函數(shù)分別返回序列中最大和最小的元素,創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎8.2.6正則表達式正則表達式使用單個字符串來描述、匹配一系列句法規(guī)則,通常被用來檢索、替換某個模式的文本,是一種字符串處理的有力工具。正則表達式按照某種預定義的模式去匹配一類具有共同特征的字符串,主要用于字符串處理,可以快速準確地完成復雜的查找、替換等要求。Python提供了re模塊,可以完成正則表達式操作所需要的基本功能。
re模塊中正則表達式由元字符及其不同組合來構(gòu)成,通過構(gòu)造正則表達式可以匹配任意字符串,并完成復雜的字符串處理任務。re模塊提供了Perl風格的正則表達式模式,擁有全部的正則表達式功能。下面主要介紹re模塊中常用的正則表達式處理函數(shù)。創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎1re.match函數(shù)re.match函數(shù)嘗試從字符串的起始位置匹配一個模式,如果匹配失敗,match()方法返回none,函數(shù)語法如下:re.match(pattern,string,flags=0)re.match函數(shù)的參數(shù)說明如表8-10所示。參數(shù)描述pattern匹配的正則表達式string要匹配的字符串flags標志位,用于控制正則表達式的匹配方式表8-10函數(shù)參數(shù)說明創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎可以使用group()或groups()函數(shù)獲取匹配表達式,匹配對象的方法描述如表8-11所示。匹配對象方法描述group(num=0)匹配的整個表達式的字符串,可以一次輸入多個組號,返回一個包含組所對應值的元組。groups()返回包含所有小組字符串的元組。表8-11匹配對象方法描述創(chuàng)新與貢獻研究意義選題背景第八章8.2語言基礎2re.search方法re.search方法掃描整個字符串并返回第一個成功匹配的對象,語法格式如下:re.search(pattern,string,flags=0)re.match函數(shù)的參數(shù)說明如表8-12所示。參數(shù)描述pattern匹配的正則表達式string要匹配的字符串flags標志位,用于控制正則表達式的匹配方式表8-12search方法參數(shù)說明若匹配成功,re.search方法返回一個匹配的對象,否則返回None。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)函數(shù)是一種組織好的、可重復使用的、用來實現(xiàn)單一或相關聯(lián)功能的代碼段。函數(shù)能提高應用的模塊性和代碼的重復利用率。Python不僅提供了許多內(nèi)建函數(shù),比如print()函數(shù),用戶也可以自己創(chuàng)建函數(shù)完成某種特定功能。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)8.3.1函數(shù)定義函數(shù)定義規(guī)則如下:1)函數(shù)代碼塊以def關鍵詞開頭,后接函數(shù)標識符名稱和圓括號()。2)任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以定義參數(shù)。3)函數(shù)的第一行語句可以使用文檔字符串,用于存放函數(shù)說明。4)函數(shù)內(nèi)容以冒號起始,且需要縮進。5)Return語句結(jié)束函數(shù),然后返回一個值給調(diào)用方,默認為None。函數(shù)定義語法格式如下:deffunctionname(parameter):function_suitereturn[expression]關鍵字def引出函數(shù)定義,后接函數(shù)名和用小括號括起來的一系列參數(shù),最后是函數(shù)體。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)8.3.2函數(shù)調(diào)用定義函數(shù)時給函數(shù)指定一個名稱,以及函數(shù)里包含的參數(shù)和代碼塊結(jié)構(gòu)。當函數(shù)的基本結(jié)構(gòu)完成后,可以通過另一個函數(shù)調(diào)用執(zhí)行,也可以直接在提示符中執(zhí)行。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)8.3.3函數(shù)參數(shù)函數(shù)的輸入稱為參數(shù),函數(shù)的輸出稱為返回值。參數(shù)傳遞是將實參賦值給形參的過程。實參可以是常量、變量或表達式,實參的類型與形參兼容。def是函數(shù)定義的關鍵字,冒號表示函數(shù)定義的開始。函數(shù)參數(shù)列表可以為空,也可以包含多個參數(shù),參數(shù)之間使用逗號分隔。return語句返回函數(shù)的值并退出函數(shù),返回值可以是任何數(shù)據(jù)類型。return語句是可選的,可以在函數(shù)體內(nèi)任何地方出現(xiàn),表示函數(shù)調(diào)用執(zhí)行到此結(jié)束。如果函數(shù)中沒有return語句,則自動返回None。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)函數(shù)參數(shù)的傳遞Python按值傳遞參數(shù),當調(diào)用函數(shù)時,將常量或變量的值傳遞給函數(shù)的參數(shù)。實參是指函數(shù)調(diào)用時傳遞進去的參數(shù)值,Python實參分為關鍵字實參和位置實參。關鍵字實參是在調(diào)用函數(shù)時,以name=value的形式傳遞參數(shù),name就是參數(shù)的名字,也稱為形參;位置實參就是只傳遞value的形式,這要靠實參的位置來匹配形參,關鍵字參數(shù)必須位于位置參數(shù)之后。函數(shù)定義完成后,可以直接使用函數(shù)名調(diào)用函數(shù),調(diào)用格式如下:函數(shù)名(實參列表)函數(shù)的實際參數(shù)按順序傳遞給函數(shù)的形式參數(shù),然后執(zhí)行函數(shù)體。創(chuàng)新與貢獻研究意義選題背景第八章8.3函數(shù)8.3.4返回值return語句退出函數(shù),選擇性地向調(diào)用方返回一個表達式。不帶參數(shù)值的return語句返回None。8.3.5變量作用域變量起作用的范圍稱為變量的作用域,兩種最基本的變量作用域是全局變量和局部變量。變量定義在函數(shù)內(nèi)部和外部,其作用域是不同的。全局變量與局部變量本質(zhì)區(qū)別就是作用域不同。定義在函數(shù)內(nèi)部的變量擁有一個局部作用域,定義在函數(shù)外的擁有全局作用域。局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個程序范圍內(nèi)訪問。調(diào)用函數(shù)時,所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。創(chuàng)新與貢獻研究意義選題背景第八章8.4類Python是一門面向?qū)ο蟮恼Z言,在Python中創(chuàng)建一個類和對象比較容易,本章節(jié)將介紹Python的面向?qū)ο缶幊?。?chuàng)新與貢獻研究意義選題背景第八章8.4類8.4.1類定義類的定義主要包括對象的屬性和方法。Python中類的聲明使用關鍵詞class,class之后是一個空格,然后是類的名字和冒號,最后換行并定義類的內(nèi)部實現(xiàn)。類名的首字母一般要大寫,可以按照自己的習慣定義類名。類在定義時可以提供一個可選父類,如果沒有基類,那默認object作為基類。類的定義語法格式如下:class類名:成員變量成員函數(shù)創(chuàng)新與貢獻研究意義選題背景第八章8.4類類的所有實例方法都必須至少有一個名為self的參數(shù),并且必須是方法的第一個形參,self參數(shù)代表將來要創(chuàng)建的對象本身。在類的實例方法中訪問實例屬性時需要以self為前綴,但在外部通過對象名調(diào)用對象方法時并不需要傳遞這個參數(shù),如果在外部通過類名調(diào)用對象方法則需要顯式為self參數(shù)傳值。屬于實例的數(shù)據(jù)成員一般是指在構(gòu)造函數(shù)__init__()中定義的,定義和使用時必須以self作為前綴,屬于類的數(shù)據(jù)成員是在類中所有方法之外定義的。在主程序中,實例屬性只能通過對象名訪問,而類屬性可以通過類名或?qū)ο竺L問。創(chuàng)新與貢獻研究意義選題背景第八章8.4類8.4.2類方法在類中定義的方法可以粗略分為四大類:公有方法、私有方法、靜態(tài)方法和類方法。公有方法、私有方法都屬于對象,私有方法的名字以兩個下劃線“__”開始。每個對象都有自己的公有方法和私有方法,在這兩類方法中可以訪問屬于類和對象的成員。公有方法通過對象名直接調(diào)用,私有方法不能通過對象名直接調(diào)用,只能在屬于對象的方法中通過self調(diào)用或在外部通過Python支持的特殊方式來調(diào)用。如果通過類名來調(diào)用屬于對象的公有方法,需要顯式為該方法的self參數(shù)傳遞一個對象名,用來明確指定訪問哪個對象的數(shù)據(jù)成員。靜態(tài)方法和類方法都可以通過類名和對象名調(diào)用,但不能直接訪問屬于對象的成員,只能訪問屬于類的成員,靜態(tài)方法可以沒有參數(shù)。創(chuàng)新與貢獻研究意義選題背景第八章8.4類8.4.3繼承與多態(tài)1繼承繼承是為代碼復用和設計復用而設計的,是面向?qū)ο蟪绦蛟O計的重要特性之一。在繼承關系中,已有的、設計好的類稱為父類或基類,新設計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。Python支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將從左向右按順序進行搜索。單繼承語法格式如下:class<類名>(父類名)<語句>多繼承語法格式如下:class類名(父類1,父類2,....,父類n)<語句1>創(chuàng)新與貢獻研究意義選題背景第八章8.4類2多態(tài)多態(tài)是指基類的同一個方法在不同派生類對象中具有不同的表現(xiàn)和行為。派生類繼承了基類行為和屬性之后,還會增加某些特定的行為和屬性,同時還可能會對繼承來的某些行為進行一定的改變,這都是多態(tài)的表現(xiàn)形式。Python大多數(shù)運算符可以作用于多種不同類型的操作數(shù),并且對于不同類型的操作數(shù)往往有不同的表現(xiàn),是通過特殊方法與運算符重載實現(xiàn)的。創(chuàng)新與貢獻研究意義選題背景第八章8.4類8.4.4應用舉例下面通過一個簡單的學生教師類示例介紹類的定義和使用。1定義類定義類是通過class關鍵字,class后面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。創(chuàng)建類時,可以定義一個特定的方法,名為__init__(),只要創(chuàng)建這個類的一個實例就會運行這個方法。可以向__init__()方法傳遞參數(shù),這樣創(chuàng)建對象時就可以把屬性設置為希望的值,__init__()這個方法會在創(chuàng)建對象時完成初始化,同時第一個參數(shù)必須為self。創(chuàng)新與貢獻研究意義選題背景第八章8.4類首先定義Student類:classStudent(object):def__init__(self,sno,sname,ssex,sage,sdatamaing):self.sNo=snoself.sName=snameself.sSex=ssexself.sAge=sageself.sDataMaing=sdatamaingsNO表示學號,sName表示姓名,sSex表示性別,sAge表示年齡,sDataMaing表示數(shù)據(jù)挖掘課的成績。創(chuàng)新與貢獻研究意義選題背景第八章8.4類然后定義Teacher類:classTeacher(object):def__init__(self,tno,tname,tsex,tage,title):self.tNo=tnoself.tName=tnameself.tSex=tsexself.tAge=tageself.tTitle=titletNO表示教師工號,tName表示教師姓名,tSex表示教師性別,tAge表示教師年齡,tTitle表示職稱。創(chuàng)新與貢獻研究意義選題背景第八章8.4類2類方法成員(1)Student類:getNo()獲得學生學號;defgetNo(self):return(self.sNo)getName()獲得學生姓名;defgetName(self):return(self.sName)getSex()獲得學生性別;defgetSex(self):return(self.sSex)getAge()獲得學生年齡;defgetAge(self):return(self.sAge)getDataMaing()獲得學生數(shù)據(jù)挖據(jù)課的成績;defgetDataMaing(self):return(self.sDataMaing)創(chuàng)新與貢獻研究意義選題背景第八章8.4類(2)Teacher類:getNo()獲得教師工號;
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)新與貢獻研究意義選題背景第八章8.4類3類實例定義好了Student類,就可以根據(jù)該類創(chuàng)建出Student的實例,創(chuàng)建實例是通過類名+()實現(xiàn)的。a=Student("201102064","李明","男","22","94")以上代碼創(chuàng)建一個學生實例,學號201102064,姓名李明,性別男,年齡22,數(shù)據(jù)挖掘成績94。print(a.getNo())print(a.getName())print(a.getSex())print(a.getAge())print(a.getDataMaing())輸出結(jié)果為:201102064李明男2294創(chuàng)新與貢獻研究意義選題背景第八章8.4類創(chuàng)建一個教師實例,工號為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)新與貢獻研究意義選題背景第八章8.4類4類對象創(chuàng)建6個學生類的對象,輸出每個學生的信息,計算并輸出這6個學生數(shù)據(jù)挖據(jù)課的成績,以及計算并輸出數(shù)據(jù)挖據(jù)課的成績的平均成績、最高成績、最低成績。首先創(chuàng)建6個學生實例: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)建一個學生列表,將六位學生信息放入列表中:Stu=[s1,s2,s3,s4,s5]創(chuàng)新與貢獻研究意義選題背景第八章8.4類使用for循環(huán)輸出每位學生的信息,使用類方法獲得學生的信息:forninrange(0,5):print(Stu[n].getNo()+Stu[n].getName()+Stu[n].getSex()+Stu[n].sAge+str(Stu[n].getDataMaing()))其中getDataMaing()返回為int類型,需要強制轉(zhuǎn)換為str類型。輸出結(jié)果為:201602001李明男2294201602002張亮男2286201602003趙紅女2199201602004李鵬男2291201602005孫明男2384創(chuàng)新與貢獻研究意義選題背景第八章8.4類直接調(diào)用類成員sDataMaing獲得每位學生的成績,使用循環(huán)計算學生的平均成績:total=0forninrange(0,5):total=Stu[n].sDataMaing+totalaverage=total/5Print("平均成績?yōu)椋?)print(average)
最終輸出結(jié)果為:平均成績?yōu)椋?0.8
創(chuàng)新與貢獻研究意義選題背景第八章8.4類計算所有學生中的最高成績:forninrange(0,5):if(Stu[n].sDataMaing>mix):mix=Stu[n].sDataMaingprint("最高成績?yōu)椋?)print(mix)輸出結(jié)果為:
最高成績?yōu)椋?9計算所有學生中的最低成績:
forninrange(0,5):if(Stu[n].sDataMaing<mix):mun=Stu[n].sDataMaingprint("最低成績?yōu)椋?)print(mun)輸出結(jié)果為:
最低成績?yōu)椋?4創(chuàng)新與貢獻研究意義選題背景第八章8.4類5類繼承在學生類Student和教師類Teacher基礎上,再派生出一個助教類TeachAssistant,一個助教同時具有教師和學生的特征,并增加屬性工資wage。TeachAssistant類同時繼承學生類student和教師類Teacher,繼承允許子類從父類那里獲得屬性和方法,同時子類可以添加新方法或者重載父類中的任何方法。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)新與貢獻研究意義選題背景第八章8.4類TeachAssistant類的__init__方法同時繼承Student類和Teacher類的__init__構(gòu)造方法,同時具有自己獨特的屬性wage,然后創(chuàng)建一個TeachAssistant類實例:d=TeachAssistant("20090511","王梅","女","30","助教",0,5000)print(d.tName)print(d.sName)輸出結(jié)果都為王梅,可知TeachAssistant同時繼承了父類的tName屬性與sName屬性。
print(d.getTitle())print(d.getDataMaing())輸出結(jié)果為:助教0??芍猅eachAssistant類又分別繼承了父類的getTitle()方法與getDataMaing
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育法規(guī)基礎試題庫和答案要點
- 疫情之下企業(yè)直播告訴發(fā)展遇新機遇
- 航空模型基礎理論知識單選題100道及答案解析
- 2024年個人用工保證協(xié)議參考格式
- 社區(qū)教育志愿者隊伍建設研究
- 寫給愛心捐款的感謝信
- 2024年吊車租賃協(xié)議樣本2
- 2024年石灰石批發(fā)銷售協(xié)議范例
- 2024年權(quán)益過戶協(xié)議模板
- 2024年度商用空調(diào)安裝協(xié)議范本
- GB/T 44352-2024燃油蒸發(fā)排放系統(tǒng)用活性炭通用要求
- 2024山東濟南軌道交通集團限公司招聘49人高頻難、易錯點500題模擬試題附帶答案詳解
- 市政道路交通疏導方案施工方案
- “數(shù)字三品”應用場景典型案例申報書
- 2024秋三年級語文上冊第二次月考達標檢測卷第三四單元新人教版
- 2024年下半年遼寧事業(yè)單位高頻500題難、易錯點模擬試題附帶答案詳解
- 中醫(yī)人工智能
- 人教版(2024)八年級上冊物理第3章《物態(tài)變化》單元測試卷(含答案解析)
- 金屬冶煉(鉛、鋅冶煉)主要負責人安全資格考試題庫及答案
- 2024中國鐵路集團全國招聘高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- (全冊各類齊全)二年級數(shù)學上冊100道口算題大全54份(100題)
評論
0/150
提交評論