《Python程序設(shè)計基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常_第1頁
《Python程序設(shè)計基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常_第2頁
《Python程序設(shè)計基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常_第3頁
《Python程序設(shè)計基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常_第4頁
《Python程序設(shè)計基礎(chǔ)》課件 第5-8章 函數(shù)與模塊-文件與異常_第5頁
已閱讀5頁,還剩146頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章函數(shù)與模塊12第一節(jié)函數(shù)定義與調(diào)用第二節(jié)函數(shù)參數(shù)第三節(jié)函數(shù)變量作用域第四節(jié)數(shù)學(xué)函數(shù)第五節(jié)字符串函數(shù)第六節(jié)列表函數(shù)第七節(jié)模塊與包函數(shù)定義與調(diào)用

第一節(jié)31.?理解函數(shù)的概念及作用。2.?掌握函數(shù)的定義方法和調(diào)用方式。4一、函數(shù)的概念及作用1.?函數(shù)的概念函數(shù)是組織好的、可重復(fù)使用的、用于實現(xiàn)某一功能的代碼段。2.?函數(shù)的作用從代碼角度來看,借助函數(shù),代碼邏輯可以得到優(yōu)化,更便于閱讀;從程序員角度來看,借助函數(shù),可以提高代碼編寫效率和質(zhì)量,便于測試和更新代碼;從團隊協(xié)作角度來看,合理共享函數(shù),可以提升團隊效率。5二、函數(shù)的定義與調(diào)用1.?函數(shù)的定義自定義函數(shù)的語法格式:def函數(shù)名([形參1,形參2,…]):

函數(shù)體[return返回值]說明:(1)函數(shù)代碼塊以關(guān)鍵字def開頭,空一格緊跟函數(shù)名、括號和冒號,然后是函數(shù)體。函數(shù)體相對于關(guān)鍵字def有一定的縮進量。6(2)函數(shù)名不能與內(nèi)置函數(shù)名相同,也不能與Python中的關(guān)鍵字相同。(3)形參為可選項,形參間用半角逗號“,”分隔。調(diào)用函數(shù)時,傳遞過來的值會賦給形參,所以可以將形參理解為函數(shù)的輸入,形參傳遞對象可以是數(shù)字、字符串,也可以是列表、元組等。(4)函數(shù)體中可以使用return語句返回一個值給調(diào)用方。return不帶返回值或沒有return語句時,系統(tǒng)會自動返回None。(5)在定義函數(shù)時,為提高代碼的可讀性,可在函數(shù)體開頭加上注釋,以說明函數(shù)的功能。72.?函數(shù)的調(diào)用定義函數(shù)后,可以在程序中使用該函數(shù),這個過程稱為函數(shù)的調(diào)用。函數(shù)的調(diào)用格式:函數(shù)名([實參1,實參2,…])8函數(shù)參數(shù)第二節(jié)91.?了解形參和實參的含義。2.?了解參數(shù)的傳遞方式。3.?了解參數(shù)的類型。4.?了解序列解包。10一、函數(shù)參數(shù)的傳遞與類型1.?函數(shù)參數(shù)的傳遞在Python中調(diào)用函數(shù)時,實參向形參的數(shù)據(jù)傳遞是單向的,即把實參的數(shù)據(jù)傳遞給形參,而不能由形參傳回給實參。當(dāng)函數(shù)獲得實參后,如果函數(shù)體內(nèi)部改變了形參,該改變是否會影響實參,取決于傳遞的參數(shù)類型。11Python中的不可變對象與可變對象(1)不可變對象【例】在Python交互模式下輸入如下內(nèi)容并執(zhí)行。變量賦值a=1后再賦值a=2,可發(fā)現(xiàn)內(nèi)存地址發(fā)生了變化,這里實際是在內(nèi)存中新生成了一個整型對象,原來的1被丟棄。所以說,這里不是改變a的值,而是新生成了一個a。因此,將類似數(shù)值型數(shù)據(jù)對象稱為不可變對象。12(2)可變對象【例】在Python交互模式下輸入如下內(nèi)容并執(zhí)行。13定義列表list1=[1,2,3]后再通過list1[1]=4對其中索引為1的元素進行修改,可發(fā)現(xiàn)修改后列表對象在內(nèi)存中的地址沒有改變,只是其內(nèi)部的一部分值被修改了。因此,將類似列表數(shù)據(jù)對象稱為可變對象。在Python中,如果傳遞的數(shù)據(jù)為不可變類型,那么在函數(shù)體內(nèi)對形參的修改不會影響實參;如果傳遞的數(shù)據(jù)為可變類型,那么在函數(shù)體內(nèi)對形參的修改可能會影響實參。142.?函數(shù)參數(shù)的類型在Python中,函數(shù)參數(shù)的類型有多種,可分為位置參數(shù)、關(guān)鍵字參數(shù)、默認參數(shù)和不定長參數(shù),見下表。15函數(shù)參數(shù)的類型(1)位置參數(shù)位置參數(shù)也稱為必備參數(shù),是較常用的一種參數(shù)。函數(shù)調(diào)用時,實參需以正確的順序傳給形參,且實參和形參的數(shù)量相等。(2)關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是一種特殊的參數(shù)傳遞方式。其特點在于側(cè)重于通過指定參數(shù)名來傳遞實參,在調(diào)用函數(shù)時,可依據(jù)需要傳入0個或多個帶有明確參數(shù)名的參數(shù)。這些參數(shù)在函數(shù)內(nèi)部自動被組裝成一個字典,在函數(shù)調(diào)用時,使用“形參名=實參值”這種形式,實參的順序與形參的順序可以不一致,并不影響傳遞的結(jié)果,因而編程人員無須識記參數(shù)順序。16(3)默認參數(shù)在定義函數(shù)時,可以給參數(shù)賦一個默認值。函數(shù)調(diào)用時,如果沒有給這個參數(shù)傳遞值,將使用默認值。(4)不定長參數(shù)當(dāng)函數(shù)中的參數(shù)個數(shù)無法確定時,在Python中還可以定義可變長度的參數(shù)(或稱為不定長參數(shù))。所謂不定長參數(shù),是指傳遞的參數(shù)個數(shù)是變化的,可以是0個,也可以是多個。不定長參數(shù)在函數(shù)定義時主要有兩種形式:函數(shù)名([形參,形參,…,]*形參)和函數(shù)名([形參,形參,…,]**形參)。17二、序列解包序列解包是指一次給多個變量賦多個值。在調(diào)用包含多個參數(shù)的函數(shù)時,可以使用列表、元組、字典、集合及其他可迭代對象作為實參,其形式如下:*實參,Python解釋器將自動對其進行解包,然后傳遞給多個位置形參。18【例】在PyCharm集成開發(fā)環(huán)境下輸入以下代碼并運行程序,了解序列解包

“*實參”的作用。19程序運行結(jié)果如圖所示。實例中func()函數(shù)的形參為a、b、c和d,第一次調(diào)用時傳遞列表,函數(shù)執(zhí)行時,列表中的4個元素會被自動賦給函數(shù)中的4個參數(shù)。第二次調(diào)用時傳遞的是字典,解包時默認傳遞的是字典的鍵。第三次調(diào)用時明確是調(diào)用字典的鍵值,所以解包時傳遞的是字典的鍵值。20程序運行結(jié)果函數(shù)變量作用域第三節(jié)211.?理解函數(shù)變量的作用域。2.?能區(qū)分全局變量與局部變量。22一、局部變量和全局變量Python中的變量根據(jù)作用范圍可分為兩種類型:局部變量和全局變量,其作用域及訪問范圍見下表。在函數(shù)內(nèi)部定義的變量只在函數(shù)內(nèi)部起作用,被稱為局部變量。在函數(shù)執(zhí)行結(jié)束后,局部變量自動被刪除,不能再使用。在函數(shù)外部定義的變量,或在函數(shù)內(nèi)部使用關(guān)鍵字global聲明的變量,被稱為全局變量。全局變量自定義起在后續(xù)程序范圍內(nèi)均可訪問。23局部變量和全局變量的作用域及訪問范圍二、關(guān)鍵字global在函數(shù)內(nèi)顯式地用關(guān)鍵字global進行變量聲明,可以將變量聲明為全局變量。【例】在PyCharm集成開發(fā)環(huán)境下,要求依次輸入若干學(xué)生的成績,并統(tǒng)計成績在85分以上的人數(shù),以輸入-1作為結(jié)束標記,請利用全局變量來實現(xiàn)。24程序運行結(jié)果如圖所示。25程序運行結(jié)果數(shù)學(xué)函數(shù)第四節(jié)261.?了解數(shù)學(xué)函數(shù)的含義。2.?了解abs?(?)、max?(?)、min?(?)、sqrt?(?)、pow?(?)、round?(?)等函數(shù)的使用方法。27數(shù)學(xué)函數(shù)就是進行數(shù)學(xué)計算的函數(shù)。Python中常用的數(shù)學(xué)函數(shù)見下表。28Python中常用的數(shù)學(xué)函數(shù)【例】在PyCharm集成開發(fā)環(huán)境下,根據(jù)班級學(xué)生的成績,統(tǒng)計出成績最高分、最低分、平均分以及成績在60分以下的人數(shù)和成績在60~100分的不同分數(shù)段的人數(shù)。29程序運行結(jié)果如圖所示。30程序運行結(jié)果字符串函數(shù)第五節(jié)311.?了解字符串函數(shù)的含義。2.?了解len?(?)、count?(?)、find?(?)、join?(?)、split?(?)、strip?(?)、replace?(?)、upper?(?)、?lower?(?)?等函數(shù)的使用方法。32字符串函數(shù)是與字符串相關(guān)的一些函數(shù),可實現(xiàn)字符串的分解、合并、統(tǒng)計等操作。Python中常用的字符串函數(shù)見下表。33Python中常用的字符串函數(shù)34Python中常用的字符串函數(shù)【例

】在PyCharm集成開發(fā)環(huán)境下一次輸入多個成績,并統(tǒng)計出最高分、最低分和平均分。程序運行結(jié)果如圖所示。35程序運行結(jié)果列表函數(shù)第六節(jié)361.?了解列表函數(shù)的含義。2.?了解append?(?)、extend?(?)、insert?(?)、pop?(?)、remove?(?)、count?(?)、sort?(?)?等常用的列表函數(shù)。37列表函數(shù)是與列表相關(guān)的一些函數(shù),能實現(xiàn)列表元素的添加、刪除、插入等相關(guān)操作,其功能類似列表中的方法。Python中常用的列表函數(shù)下見表。38Python中常用的列表函數(shù)39Python中常用的列表函數(shù)【例】在PyCharm集成開發(fā)環(huán)境下計算運動員的成績。評分規(guī)則如下:共有7名評委為運動員評分,最高可評10分,在刪除一個最高分和一個最低分后,將其他評委的評分求平均分,作為該運動員的成績(保留兩位小數(shù))。40程序運行結(jié)果如圖所示。41程序運行結(jié)果模塊與包第七節(jié)421.?了解模塊的概念。2.?掌握模塊的導(dǎo)入方法。3.?了解包的概念。4.?了解Python標準庫。5.?能安裝并使用第三方庫。43軟件開發(fā)是一項系統(tǒng)工程,一般通過多人協(xié)作來完成。在開發(fā)中,可以將自己設(shè)計的函數(shù)分享給他人,也可以引入他人設(shè)計好的函數(shù),以提高編程效率。在Python中,模塊是一個包含Python定義和聲明的文件,模塊的擴展名通常與程序文件的擴展名相同,即“.py”,例如模塊“datetime.py”。模塊可以包含函數(shù)、類、變量等,并且可以定義可執(zhí)行的代碼。模塊在Python中扮演著重要的角色,能使得代碼更加清晰,便于管理和維護。模塊一般存放在安裝文件夾Lib中,分為標準庫模塊和自定義模塊兩大類。44一、模塊的導(dǎo)入方法1.?import?模塊名【例】在Python交互模式下輸入如下內(nèi)容并執(zhí)行。2.?from?模塊名?import?函數(shù)名【例】在Python交互模式下輸入如下內(nèi)容并執(zhí)行。453.?from?模塊名?import?*【例】在Python交互模式下輸入如下內(nèi)容并執(zhí)行。46二、Python標準庫Python提供了龐大的標準庫,標準庫內(nèi)置了大量的模塊,而模塊中內(nèi)置了大量的函數(shù)和類。常用標準庫模塊見下表。47常用標準庫模塊1.?datetime日期和時間模塊datetime包括日期和時間的相關(guān)功能,下表所示為其部分常用方法。48datetime的部分常用方法2.?math數(shù)學(xué)模塊math提供了很多數(shù)學(xué)函數(shù),下表所示為math的部分常用函數(shù)。49math的部分常用函數(shù)3.?random在實際應(yīng)用中,常常需要使用隨機數(shù),如生成一系列隨機數(shù)計算其平均值。下表所示為隨機數(shù)模塊random的部分常用函數(shù)。50隨機數(shù)模塊random的部分常用函數(shù)三、第三方庫的安裝requests是Python中的HTTP客戶端庫,它可以方便、快捷地發(fā)送HTTP請求并處理HTTP響應(yīng)。requests不是Python中一個預(yù)裝好的庫,需要手動安裝,可以使用自帶的pip命令來安裝。1.保證計算機已連接互聯(lián)網(wǎng)。2.打開“命令提示符”對話框,如圖所示。51“命令提示符”對話框3.由于pip命令不是操作系統(tǒng)的內(nèi)置命令,所以需要切換到Python安裝程序所在的pip命令目錄,如圖所示,本示例中pip命令所在目錄為D:\Programs\Python\Python311\Scripts。其切換的步驟如圖中所示。52切換到pip命令目錄4.使用pip命令安裝:pipinstallrequests,自動下載并安裝requests,如圖所示。53自動下載并安裝requests安裝完成后,就可以順利導(dǎo)入第三方庫requests,如圖所示。從上圖中可以發(fā)現(xiàn),在Python交互模式下,在使用pip命令安裝第三方庫requests前使用importrequests語句無法導(dǎo)入該庫,而使用pip命令安裝第三方庫requests后可以順利導(dǎo)入該庫。54導(dǎo)入第三方庫requests四、自定義模塊自定義模塊是由用戶創(chuàng)建的代碼文件,可以設(shè)計個性化模塊來豐富Python的功能。【例】在PyCharm集成開發(fā)環(huán)境下創(chuàng)建兩個文件,將兩個文件的文件名分別命名為test5.py和test5-7-7.py,分別輸入如下代碼,并查看運行結(jié)果。55程序運行結(jié)果如圖所示。56程序運行結(jié)果五、包當(dāng)所定義的模塊文件越來越多時,應(yīng)考慮建立子文件夾,將模塊文件分類存放。如現(xiàn)有test1.py、test2.py、test3.py、test4.py、test5.py共5個模塊文件,將這些模塊文件統(tǒng)一存放到包目錄中,如圖所示。57一個完整的自定義包目錄package11.?建立包目錄在項目文件夾上單擊鼠標右鍵,在彈出的快捷菜單中選擇“New(新建)”→“PythonPackage(Python包)”命令,如圖所示,在彈出的窗口中輸入包目錄名,如圖所示。在創(chuàng)建的包目錄下自動生成一個名為“_init_.py”的空文件。該文件用來說明存有該文件的目錄是一個包目錄,使用解釋器搜索路徑時,可以明顯與其他目錄區(qū)分開來。5859輸入包目錄名選擇包目錄創(chuàng)建命令2.?創(chuàng)建模塊文件在包中創(chuàng)建模塊文件test1.py、test2.py、test3.py、test4.py,并把上【例】中創(chuàng)建的文件test5.py移至package1包中。3.?導(dǎo)入包模塊利用import語句修改文件test5-7-7.py代碼。60第六章正則表達式6162第一節(jié)正則表達式語法與方法第二節(jié)正則表達式對象正則表達式語法與方法第一節(jié)631.?掌握正則表達式的概念及作用。2.?了解正則表達式的語法。3.?了解正則表達式re模塊的常用方法。64一、正則表達式的概念及作用1.?正則表達式的概念正則表達式又稱規(guī)則表達式,是一種文本模式,由一串普通字符和特殊字符組成。正則表達式通常被用來檢索、替換符合某文本模式的內(nèi)容。2.?正則表達式的作用正則表達式可以用來檢查一個字符串是否含有某個子串、將匹配的子串替換或從某個字符串中取出某個條件的子串等。65二、正則表達式的語法構(gòu)造正則表達式的方法是使用多種特殊符號和字符(稱為元字符)與運算符,將小的表達式結(jié)合在一起創(chuàng)建更大的表達式。正則表達式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或所有這些組件的任意

組合。正則表達式是由普通字符及元字符組成的字符模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。661.?普通字符普通字符包括沒有顯式指定為元字符的所有可打印和非打印字符,包括大寫和小寫字母、數(shù)字、標點符號和一些特殊符號。下表所示為非打印字符的轉(zhuǎn)義序列。67非打印字符的轉(zhuǎn)義序列2.?元字符元字符是具有特殊含義的字符,用于定義模式匹配的規(guī)則,一般由特殊符號和字符組成,正則表達式常用的元字符見下表。68正則表達式常用的元字符69正則表達式常用的元字符【例】在PyCharm集成開發(fā)環(huán)境下編寫程序,實現(xiàn)在已知字符串中查找所有子串的位置。70程序運行結(jié)果如圖所示。finditer()方法用于在字符串中找到正則表達式所匹配的所有子串,即返回的是一個迭代器,每個迭代元素是一個Match對象。Match對象是一次匹配的結(jié)果,包含了許多匹配的相關(guān)信息。71Python的應(yīng)用三、正則表達式re模塊常用的方法1.?search?(?)方法格式:re.search(pattern,string,flags=0)功能:掃描整個字符串,搜索匹配的第一個位置并返回一個Match對象。若匹配失敗,則返回None。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項,其常用取值見下表。7273參數(shù)flags的常用取值2.?match?(?)方法格式:re.match(pattern,string,flags=0)功能:從字符串的起始位置匹配正則表達式,并返回匹配對象。如果在起始位置沒有匹配成功,則返回None。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。743.?findall?(?)方法格式:re.findall(pattern,string,flags=0)功能:在字符串中找到正則表達式所匹配的所有子串,并返回一個列表。如果沒有找到匹配的子串,則返回空列表。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。754.?finditer?(?)方法格式:re.finditer(pattern,string,flags=0)功能:與findall()方法類似,在字符串中找到正則表達式所匹配的所有子串,并將其作為一個迭代器返回。每個迭代器元素是一個Match對象,因此,可以通過循環(huán)的方式來匹配相關(guān)操作。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。765.?split?(?)方法格式:re.split(pattern,string,maxsplit=0,flags=0)功能:將一個字符串按照正則表達式的要求分割,分割后返回列表。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;maxsplit是最大的分割次數(shù),默認為0,不限制次數(shù),可以約定將一個字符串分割為幾個子串,將超過最大分割次數(shù)的部分作為一個整體,成為最后一個元素;flags用于控制正則表達式的匹配方式,為可選項。776.?sub?(?)方法格式:re.sub(pattern,repl,string,count=0,flags=0)功能:在一個字符串中替換所有匹配正則表達式的子串,并返回替換后的字符串。說明:pattern是要匹配的正則表達式;repl是替換的字符串;string是要匹配的字符串;count是指替換的最大次數(shù),默認值為0,即根據(jù)實際匹配數(shù)進行替換;flags用于控制正則表達式的匹配方式,為可選項。78正則表達式對象第二節(jié)791.?掌握正則表達式的子模式。2.?掌握正則表達式對象。3.?能運用match?(?)、compile?(?)、split?(?)等解決實際問題。80一、compile()方法格式:pile(patten,flags=0)功能:編譯正則表達式,生成一個正則表達式對象。說明:patten是要匹配的正則表達式,flags用于控制正則表達式的匹配方式,其返回值是一個正則表達式對象。81二、子模式與Match對象1.?子模式在正則表達式中,可以使用括號“()”將模式中的子串括起來,以形成一個子模式。將子模式視為一個整體時,它就相當(dāng)于單個字符,括號中的內(nèi)容被作為一個整體處理。子模式通過使用括號為整個匹配模式分組,默認情況下,每個分組會自動擁有一個組號,其規(guī)則如下:從左到右,以分組的左括號為標志,第一個出現(xiàn)的分組為組號1,第二個出現(xiàn)的分組為組號2,其余以此類推。其中分組0表示對應(yīng)整個正則表達式。822.?Match對象在正則表達式中,當(dāng)search()和match()方法匹配時,返回的是一個Match對象。re模塊中提供了一些與Match對象相關(guān)的方法,用于獲取匹配結(jié)果中的各項數(shù)據(jù),見下表。83Match對象的常用方法第七章面向?qū)ο缶幊?485第一節(jié)面向?qū)ο蠡A(chǔ)第二節(jié)類的定義與使用第三節(jié)數(shù)據(jù)成員與方法成員第四節(jié)類的繼承第五節(jié)類的封裝和多態(tài)面向?qū)ο蠡A(chǔ)第一節(jié)861.?了解面向?qū)ο蟮暮x。2.?了解面向?qū)ο蟮幕咎卣鳌?.?了解面向?qū)ο蟮某S眯g(shù)語。87一、面向?qū)ο蟮暮x面向?qū)ο缶幊淌且环N通過對象,把現(xiàn)實世界映射到計算機模型的編程方法。把數(shù)據(jù)和對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存的整體——對象。這里把現(xiàn)實世界的任何事物都當(dāng)作一個相對獨立的對象來看待;也可以是抽象的事件。88二、面對對象的基本特征1.?封裝封裝是面向?qū)ο缶幊痰暮诵乃枷耄瑢ο蟮膶傩院托袨榉庋b起來就是類。采用封裝的優(yōu)點是保證了類內(nèi)部數(shù)據(jù)結(jié)構(gòu)的完整性,使用類時不能直接訪問該類中的數(shù)據(jù),避免了外部對內(nèi)部數(shù)據(jù)的影響,提高了程序的可維護性。面向?qū)ο蟪绦蛟O(shè)計采用封裝具有以下兩方面含義。(1)將有關(guān)的數(shù)據(jù)和操作代碼封裝在一個類中,各個類之間相對獨立,互不干擾。(2)將類中的某些數(shù)據(jù)和操作代碼對外隱蔽,即隱蔽內(nèi)部細節(jié),只留下少量接口,以便與外部聯(lián)系,接收外部的消息。892.?繼承繼承主要利用了特定對象之間的共有屬性。如果類之間具有繼承關(guān)系,則它們具有以下特性。(1)類之間具有共享特性。(2)類之間具有差別或新增部分。(3)類之間具有層次結(jié)構(gòu)。繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其他語言的最重要的特點,是其他語言所沒有的。繼承性可以避免公用代碼的重復(fù)開發(fā),避免代碼和數(shù)據(jù)冗余,而且能通過增強一致性來減少模塊間的接口和界面。903.?多態(tài)多態(tài)是指同一個行為可以有不同的表現(xiàn)形式。多態(tài)的意義在于同一操作作用于不同的對象時,可以有不同的解釋,從而產(chǎn)生不同的執(zhí)行結(jié)果,即“以父類的身份出現(xiàn),以自己的方式工作”。91三、面向?qū)ο蟮某S眯g(shù)語1.?類類(class)是用來描述具有相同的屬性(數(shù)據(jù))和行為(方法)的對象集合。它定義了該集合中所有對象共有的數(shù)據(jù)和方法,對象是類的實例。922.?對象對象是通過類定義的數(shù)據(jù)結(jié)構(gòu)進行實例化后的變量。對象包括數(shù)據(jù)成員(類變量和實例變量)和方法。Python和其他編程語言相比,在盡可能不增加新的語法和語義的情況下加入了類機制。面向?qū)ο缶幊痰奶攸c如下。(1)完全采用面向?qū)ο蟮乃枷耄且环N高級動態(tài)編程語言。(2)支持封裝、繼承、多態(tài)、重載和重寫。(3)一切內(nèi)容都為對象,如字符串、列表、元組、數(shù)值等。(4)創(chuàng)建類時,屬性用變量表示,行為用方法表示。933.?實例化實例化就是創(chuàng)建一個類的實例,即類的具體對象。4.?類變量類變量在整個實例化的對象中是公用的。類變量定義在類中且在方法體之外。5.?實例變量實例變量是定義在方法中的變量,只作用于當(dāng)前實例中。946.?數(shù)據(jù)成員類變量或?qū)嵗兞坑糜谔幚眍惣捌鋵嵗龑ο蟮南嚓P(guān)數(shù)據(jù)就是數(shù)據(jù)成員。7.?方法類中定義的函數(shù)常稱為方法。方法是類中一種特殊的函數(shù)。8.?方法重寫如果從父類繼承的方法不能滿足子類的要求,可以對其進行改寫,這個過程稱為方法覆蓋,也稱為方法重寫。95類的定義與使用第二節(jié)961.?了解類的含義。2.?掌握類的定義方法。3.?掌握類實例化的方法。97一、類的定義Python中使用關(guān)鍵字class來定義類。格式:class類名:數(shù)據(jù)成員名=值

def方法名():方法體98說明:1.類名遵循標識符命名規(guī)則,通常情況下建議類名首字母大寫,有多個單詞時遵循“駝峰原則”。2.類的成員包括數(shù)據(jù)成員和方法成員。數(shù)據(jù)成員的定義通過直接給數(shù)據(jù)成員賦值的方式進行,方法成員的定義與函數(shù)的定義方式相同。99二、類的實例化類的實例化即由類創(chuàng)建對象。當(dāng)類定義完成后,并不會真正創(chuàng)建一個實例。格式:對象名=類名([參數(shù)1,參數(shù)2,…])功能:將類實例化為對象。說明:參數(shù)是可選項,根據(jù)類的構(gòu)造方法選擇是否需要參數(shù)。通過“對象名.數(shù)據(jù)成員”或“對象名.方法成員()”的方式來訪問對象的數(shù)據(jù)成員或方法成員。100

數(shù)據(jù)成員與方法成員第三節(jié)1011.?了解數(shù)據(jù)成員的類別。2.?了解方法成員的類別。3.?能區(qū)分類成員和實例成員。102一、數(shù)據(jù)成員1.?數(shù)據(jù)成員的類別Python中類的數(shù)據(jù)成員包括類成員(類屬性)和實例成員(實例屬性)。類成員是在類中所有方法之外定義的數(shù)據(jù)成員;實例成員一般是在構(gòu)造方法__init__()中定義的,定義和使用時必須以self作為前綴。與構(gòu)造方法相對應(yīng)的方法稱為析構(gòu)方法__del__(),是將產(chǎn)生的對象清除后由系統(tǒng)自動調(diào)用,一般用來釋放對象所占用的資源。如果沒有明確定義析構(gòu)方法,系統(tǒng)會提供一個默認的析構(gòu)方法進行必要的清理工作。1032.?數(shù)據(jù)成員的區(qū)別在主程序(或類的外部)中,實例成員屬于實例(即對象),只能通過對象名訪問;而類成員屬于類,既可以通過類名訪問,也可以通過對象名訪問。3.?類成員的增加與其他面向?qū)ο缶幊痰恼Z言不同,在Python中,允許動態(tài)地為類和對象增加成員,這是Python動態(tài)類型特點的重要體現(xiàn)。4.?屬性值的修改如果修改類成員的值,應(yīng)通過類修改,而不能通過對象修改。104二、方法成員1.?實例方法實例方法是每個對象所有的、各自獨立的方法。如果類中定義的方法沒有特殊聲明,都是實例方法。類的所有方法都應(yīng)至少有一個名為self的參數(shù),并且必須是方法的第一個參數(shù)。參數(shù)self代表將來要創(chuàng)建的對象本身,在外部通過“對象名.方法名()”調(diào)用實例方法時并不需要傳遞這個參數(shù);如果在外部通過“類名.方法名()”調(diào)用實例方法,則需要顯式地為參數(shù)self傳值。在類的實例方法中訪問實例成員時,需以“self.實例成員”形式訪問,訪問類成員時需以“類名.類成員”形式訪問。1052.?類方法類方法是屬于類的方法,不屬于任何實例對象。類方法主要模擬__init__構(gòu)造方法在定義類的時候使用類的屬性或者給類的屬性賦值。類方法以cls作為第一個參數(shù)表示該類自身,使用方法與self類似。在類中定義類方法時用@classmethod修飾。1063.?靜態(tài)方法與類方法相似,靜態(tài)方法不屬于任何實例對象,它只屬于類。靜態(tài)方法主要存放邏輯性的代碼,是一個相對獨立、單純的方法。在類中定義靜態(tài)方法時用@staticmethod修飾。靜態(tài)方法可以沒有任何參數(shù)。同樣,靜態(tài)方法既可以通過“類名.方法名()”形式訪問,也可以通過“對象名.方法名()”形式訪問,與類方法相同,靜態(tài)方法中也只能訪問類成員,而不能訪問實例成員。107三、訪問權(quán)限1.?公有的公有的類成員可以在任何地方被訪問,其成員兩側(cè)不帶下畫線,形如

×××。2.?受保護的受保護的類成員可以被其自身及其子類訪問,其成員以單下畫線開頭,形如_×××。1083.?私有的私有的類成員只能被其定義所在的類訪問,其成員以雙下畫線開頭,形如__×××。4.?特殊成員特殊成員的兩側(cè)各有雙下畫線,形如__×××__,為系統(tǒng)定義的特殊成員,如構(gòu)造方法__init__等。109類的繼承第四節(jié)1101.?了解繼承的含義。2.?掌握繼承的定義格式。3.?能調(diào)用父類方法。111一、繼承關(guān)系在程序中,繼承描述的是事物之間的所屬關(guān)系,一般來說,子類是基類的特殊化。如圖所示,父類為學(xué)生,小學(xué)生、初中生、高中生和大學(xué)生都是父類派生而來的子類。112繼承關(guān)系二、繼承的定義格式繼承的語法格式:class子類名(父類名1[,父類名2…]):

子類成員定義父類寫在括號內(nèi),如果子類有多個父類,則需要全部寫在括號內(nèi)并用逗號“,”分隔,括號后緊跟冒號。113三、父類方法的調(diào)用子類除了可以繼承父類成員外,還可以添加自己的一些成員。如果需要在子類中調(diào)用父類的方法,可以使用內(nèi)置方法“super().方法名”或通過“父類名.方法名()”方式來實現(xiàn)。四、多繼承在Python中支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將按順序從左向右進行搜索。114類的封裝和多態(tài)第五節(jié)1151.?了解類的封裝的含義。2.?了解類的多態(tài)的含義。116一、類的封裝在Python中,類的封裝是指將類的某些部分(屬性、方法)隱藏起來,稱為私有屬性或方法。實例化的對象不能直接使用被封裝的方法和屬性。封裝具有一定的保護作用,可以隱藏對象的屬性和方法。在Python中,封裝的格式在本章的第三節(jié)訪問權(quán)限中已提及,即私有的方法或?qū)傩裕趯傩院头椒Q上加雙下畫線“__”前綴,完成封裝。117二、類的多態(tài)多態(tài)是面向?qū)ο缶幊痰挠忠惶匦浴K^多態(tài),是指不同的類中使用相同的方法名實現(xiàn)不同的功能。子類繼承父類的成員,可以重寫父類的成員方法,使其滿足自己的需求,這就是多態(tài)的表現(xiàn)形式。在Python中,主要通過重寫父類方法來實現(xiàn)多態(tài)。118第八章文件與異常119120第一節(jié)文件的基本操作第二節(jié)文件與目錄操作第三節(jié)異常處理文件的基本操作第一節(jié)1211.?了解文件操作的類型。2.?能打開與關(guān)閉文件。3.?能讀寫文本文件。122一、文件的打開與關(guān)閉1.?文件的打開——open?(?)?函數(shù)格式:open?(file,?mode="r",buffering=-1,?encoding=None,?errors=None,?newline=None,?closefd=True,?opener=None)?功能:以指定的模式打開指定文件。說明:(1)file:文件路徑及文件名,可使用相對路徑或絕對路徑。(2)mode:文件的打開模式,默認值為“r”,即只讀模式。文件打開模式見下表。以不同模式打開文件時,文件指針的初始位置有所不同。以“只讀”和“只寫”模式打開時,文件指針的初始位置是文件頭;以“追加”模式打開文件時,文件指針的初始位置是文件尾。123124文件打開模式(3)buffering:指定讀寫文件的緩存模式。0表示不緩沖,1表示行緩沖,如大于1則表示緩沖區(qū)的大小。默認值為

-1,表示使用系統(tǒng)默認的緩沖區(qū)大小。(4)encoding:指定文件的編碼方式,只適用于文本模式,可以使用Python支持的任何格式。(5)errors:指定如何處理編碼和解碼錯誤。(6)newline:區(qū)分換行符,只適用于文本模式,取值可以是None、""、\n、\r、\r\n。(7)closefd:根據(jù)傳入的file參數(shù)類型,設(shè)置文件是否在文件對象的close?(?)?方法中被關(guān)閉。(8)opener:自定義打開文件方式。1252.?文件的關(guān)閉——close?(?)?函數(shù)在絕大多數(shù)情況下,打開文件和關(guān)閉文件是一對標配操作。如果不關(guān)閉打開的文件,則打開的文件對象會一直留存在內(nèi)存中,若打開的文件多了,容易出現(xiàn)內(nèi)存溢出等錯誤。格式:文件對象.close?(?)?功能:將緩沖區(qū)的內(nèi)容寫入文件,同時關(guān)閉文件,并釋放文件對象。說明:文件對象是指用open?(?)?函數(shù)打開后返回的對象。126二、文本文件的讀寫操作1.?寫操作Python中提供了多種方法進行文本文件的寫操作。(1)write?(?)?方法格式:文件對象.write?(s)功能:將字符串s寫入文件中。說明:write?(?)?方法的返回值為寫入的字符數(shù);在寫模式下打開一個已經(jīng)存在的文件時,將清除原文件的內(nèi)容,若要保留原文件的內(nèi)容,可以采用追加模式;寫入內(nèi)容時,系統(tǒng)不會添加換行符,如需換行,可在字符串s中加入相應(yīng)的換行符。127(2)writeline?(?)?方法格式:文件對象.writeline?(slist)功能:將字符串列表slist寫入文本文件中。說明:如果需要一次寫入多個字符串,可將所有字符串放入一個列表中。該方法不會自動添加換行符,也沒有返回值。1282.?讀操作Python中提供了多種方式來讀取文本文件中的內(nèi)容。(1)read?(?)?方法格式:文件對象.read?([size])功能:從文本文件中讀取內(nèi)容。說明:從文件對象中讀取size個字符的內(nèi)容,若省略size,則表示讀取所有內(nèi)容,返回值為字符串。129(2)readline?(?)?方法格式:文件對象.readline?(?)?功能:從文本文件中讀取一行內(nèi)容,返回值為字符串。(3)readlines?(?)?方法格式:文件對象.readlines?(?)?功能:從文本文件中讀取全部內(nèi)容,返回值為字符串列表。130三、文件的常用屬性和方法1.?常用屬性文件的常用屬性見下表。131文件的常用屬性2.?方法除了打開、關(guān)閉和讀寫操作外,文件還有一些其他常用的內(nèi)置方法,見下表。132文件常用的內(nèi)置方法四、上下文管理語句with在程序中即使編寫了關(guān)閉文件的代碼,也無法保證文件一定能正常關(guān)閉。若在文件打開之后、關(guān)閉之前出現(xiàn)錯誤,將無法正常關(guān)閉文件。因此,在管理文件對象時推薦使用上下文管理語句with,可以有效地避免文件非正常關(guān)閉的問題。上下文管理語句with可自動管理資源,能保證文件被正確關(guān)閉,可以在代碼塊執(zhí)行完畢自動還原進入該代碼塊的上下文,常用于文件操作、數(shù)據(jù)庫連接、網(wǎng)絡(luò)通信連接等場合。133

文件與目錄操作第二節(jié)1341.?了解os、os.path模塊的常用文件和目錄操作方法。2.?能獲取文件的各種屬性,完成路徑的常見操作。135一、os模塊為方便文件與目錄操作,Python中的os模塊提供了一些常用方法,見下表。136os模塊的常用方法二

溫馨提示

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

最新文檔

評論

0/150

提交評論