




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章函數與模塊12第一節函數定義與調用第二節函數參數第三節函數變量作用域第四節數學函數第五節字符串函數第六節列表函數第七節模塊與包函數定義與調用
第一節31.?理解函數的概念及作用。2.?掌握函數的定義方法和調用方式。4一、函數的概念及作用1.?函數的概念函數是組織好的、可重復使用的、用于實現某一功能的代碼段。2.?函數的作用從代碼角度來看,借助函數,代碼邏輯可以得到優化,更便于閱讀;從程序員角度來看,借助函數,可以提高代碼編寫效率和質量,便于測試和更新代碼;從團隊協作角度來看,合理共享函數,可以提升團隊效率。5二、函數的定義與調用1.?函數的定義自定義函數的語法格式:def函數名([形參1,形參2,…]):
函數體[return返回值]說明:(1)函數代碼塊以關鍵字def開頭,空一格緊跟函數名、括號和冒號,然后是函數體。函數體相對于關鍵字def有一定的縮進量。6(2)函數名不能與內置函數名相同,也不能與Python中的關鍵字相同。(3)形參為可選項,形參間用半角逗號“,”分隔。調用函數時,傳遞過來的值會賦給形參,所以可以將形參理解為函數的輸入,形參傳遞對象可以是數字、字符串,也可以是列表、元組等。(4)函數體中可以使用return語句返回一個值給調用方。return不帶返回值或沒有return語句時,系統會自動返回None。(5)在定義函數時,為提高代碼的可讀性,可在函數體開頭加上注釋,以說明函數的功能。72.?函數的調用定義函數后,可以在程序中使用該函數,這個過程稱為函數的調用。函數的調用格式:函數名([實參1,實參2,…])8函數參數第二節91.?了解形參和實參的含義。2.?了解參數的傳遞方式。3.?了解參數的類型。4.?了解序列解包。10一、函數參數的傳遞與類型1.?函數參數的傳遞在Python中調用函數時,實參向形參的數據傳遞是單向的,即把實參的數據傳遞給形參,而不能由形參傳回給實參。當函數獲得實參后,如果函數體內部改變了形參,該改變是否會影響實參,取決于傳遞的參數類型。11Python中的不可變對象與可變對象(1)不可變對象【例】在Python交互模式下輸入如下內容并執行。變量賦值a=1后再賦值a=2,可發現內存地址發生了變化,這里實際是在內存中新生成了一個整型對象,原來的1被丟棄。所以說,這里不是改變a的值,而是新生成了一個a。因此,將類似數值型數據對象稱為不可變對象。12(2)可變對象【例】在Python交互模式下輸入如下內容并執行。13定義列表list1=[1,2,3]后再通過list1[1]=4對其中索引為1的元素進行修改,可發現修改后列表對象在內存中的地址沒有改變,只是其內部的一部分值被修改了。因此,將類似列表數據對象稱為可變對象。在Python中,如果傳遞的數據為不可變類型,那么在函數體內對形參的修改不會影響實參;如果傳遞的數據為可變類型,那么在函數體內對形參的修改可能會影響實參。142.?函數參數的類型在Python中,函數參數的類型有多種,可分為位置參數、關鍵字參數、默認參數和不定長參數,見下表。15函數參數的類型(1)位置參數位置參數也稱為必備參數,是較常用的一種參數。函數調用時,實參需以正確的順序傳給形參,且實參和形參的數量相等。(2)關鍵字參數關鍵字參數是一種特殊的參數傳遞方式。其特點在于側重于通過指定參數名來傳遞實參,在調用函數時,可依據需要傳入0個或多個帶有明確參數名的參數。這些參數在函數內部自動被組裝成一個字典,在函數調用時,使用“形參名=實參值”這種形式,實參的順序與形參的順序可以不一致,并不影響傳遞的結果,因而編程人員無須識記參數順序。16(3)默認參數在定義函數時,可以給參數賦一個默認值。函數調用時,如果沒有給這個參數傳遞值,將使用默認值。(4)不定長參數當函數中的參數個數無法確定時,在Python中還可以定義可變長度的參數(或稱為不定長參數)。所謂不定長參數,是指傳遞的參數個數是變化的,可以是0個,也可以是多個。不定長參數在函數定義時主要有兩種形式:函數名([形參,形參,…,]*形參)和函數名([形參,形參,…,]**形參)。17二、序列解包序列解包是指一次給多個變量賦多個值。在調用包含多個參數的函數時,可以使用列表、元組、字典、集合及其他可迭代對象作為實參,其形式如下:*實參,Python解釋器將自動對其進行解包,然后傳遞給多個位置形參。18【例】在PyCharm集成開發環境下輸入以下代碼并運行程序,了解序列解包
“*實參”的作用。19程序運行結果如圖所示。實例中func()函數的形參為a、b、c和d,第一次調用時傳遞列表,函數執行時,列表中的4個元素會被自動賦給函數中的4個參數。第二次調用時傳遞的是字典,解包時默認傳遞的是字典的鍵。第三次調用時明確是調用字典的鍵值,所以解包時傳遞的是字典的鍵值。20程序運行結果函數變量作用域第三節211.?理解函數變量的作用域。2.?能區分全局變量與局部變量。22一、局部變量和全局變量Python中的變量根據作用范圍可分為兩種類型:局部變量和全局變量,其作用域及訪問范圍見下表。在函數內部定義的變量只在函數內部起作用,被稱為局部變量。在函數執行結束后,局部變量自動被刪除,不能再使用。在函數外部定義的變量,或在函數內部使用關鍵字global聲明的變量,被稱為全局變量。全局變量自定義起在后續程序范圍內均可訪問。23局部變量和全局變量的作用域及訪問范圍二、關鍵字global在函數內顯式地用關鍵字global進行變量聲明,可以將變量聲明為全局變量。【例】在PyCharm集成開發環境下,要求依次輸入若干學生的成績,并統計成績在85分以上的人數,以輸入-1作為結束標記,請利用全局變量來實現。24程序運行結果如圖所示。25程序運行結果數學函數第四節261.?了解數學函數的含義。2.?了解abs?(?)、max?(?)、min?(?)、sqrt?(?)、pow?(?)、round?(?)等函數的使用方法。27數學函數就是進行數學計算的函數。Python中常用的數學函數見下表。28Python中常用的數學函數【例】在PyCharm集成開發環境下,根據班級學生的成績,統計出成績最高分、最低分、平均分以及成績在60分以下的人數和成績在60~100分的不同分數段的人數。29程序運行結果如圖所示。30程序運行結果字符串函數第五節311.?了解字符串函數的含義。2.?了解len?(?)、count?(?)、find?(?)、join?(?)、split?(?)、strip?(?)、replace?(?)、upper?(?)、?lower?(?)?等函數的使用方法。32字符串函數是與字符串相關的一些函數,可實現字符串的分解、合并、統計等操作。Python中常用的字符串函數見下表。33Python中常用的字符串函數34Python中常用的字符串函數【例
】在PyCharm集成開發環境下一次輸入多個成績,并統計出最高分、最低分和平均分。程序運行結果如圖所示。35程序運行結果列表函數第六節361.?了解列表函數的含義。2.?了解append?(?)、extend?(?)、insert?(?)、pop?(?)、remove?(?)、count?(?)、sort?(?)?等常用的列表函數。37列表函數是與列表相關的一些函數,能實現列表元素的添加、刪除、插入等相關操作,其功能類似列表中的方法。Python中常用的列表函數下見表。38Python中常用的列表函數39Python中常用的列表函數【例】在PyCharm集成開發環境下計算運動員的成績。評分規則如下:共有7名評委為運動員評分,最高可評10分,在刪除一個最高分和一個最低分后,將其他評委的評分求平均分,作為該運動員的成績(保留兩位小數)。40程序運行結果如圖所示。41程序運行結果模塊與包第七節421.?了解模塊的概念。2.?掌握模塊的導入方法。3.?了解包的概念。4.?了解Python標準庫。5.?能安裝并使用第三方庫。43軟件開發是一項系統工程,一般通過多人協作來完成。在開發中,可以將自己設計的函數分享給他人,也可以引入他人設計好的函數,以提高編程效率。在Python中,模塊是一個包含Python定義和聲明的文件,模塊的擴展名通常與程序文件的擴展名相同,即“.py”,例如模塊“datetime.py”。模塊可以包含函數、類、變量等,并且可以定義可執行的代碼。模塊在Python中扮演著重要的角色,能使得代碼更加清晰,便于管理和維護。模塊一般存放在安裝文件夾Lib中,分為標準庫模塊和自定義模塊兩大類。44一、模塊的導入方法1.?import?模塊名【例】在Python交互模式下輸入如下內容并執行。2.?from?模塊名?import?函數名【例】在Python交互模式下輸入如下內容并執行。453.?from?模塊名?import?*【例】在Python交互模式下輸入如下內容并執行。46二、Python標準庫Python提供了龐大的標準庫,標準庫內置了大量的模塊,而模塊中內置了大量的函數和類。常用標準庫模塊見下表。47常用標準庫模塊1.?datetime日期和時間模塊datetime包括日期和時間的相關功能,下表所示為其部分常用方法。48datetime的部分常用方法2.?math數學模塊math提供了很多數學函數,下表所示為math的部分常用函數。49math的部分常用函數3.?random在實際應用中,常常需要使用隨機數,如生成一系列隨機數計算其平均值。下表所示為隨機數模塊random的部分常用函數。50隨機數模塊random的部分常用函數三、第三方庫的安裝requests是Python中的HTTP客戶端庫,它可以方便、快捷地發送HTTP請求并處理HTTP響應。requests不是Python中一個預裝好的庫,需要手動安裝,可以使用自帶的pip命令來安裝。1.保證計算機已連接互聯網。2.打開“命令提示符”對話框,如圖所示。51“命令提示符”對話框3.由于pip命令不是操作系統的內置命令,所以需要切換到Python安裝程序所在的pip命令目錄,如圖所示,本示例中pip命令所在目錄為D:\Programs\Python\Python311\Scripts。其切換的步驟如圖中所示。52切換到pip命令目錄4.使用pip命令安裝:pipinstallrequests,自動下載并安裝requests,如圖所示。53自動下載并安裝requests安裝完成后,就可以順利導入第三方庫requests,如圖所示。從上圖中可以發現,在Python交互模式下,在使用pip命令安裝第三方庫requests前使用importrequests語句無法導入該庫,而使用pip命令安裝第三方庫requests后可以順利導入該庫。54導入第三方庫requests四、自定義模塊自定義模塊是由用戶創建的代碼文件,可以設計個性化模塊來豐富Python的功能。【例】在PyCharm集成開發環境下創建兩個文件,將兩個文件的文件名分別命名為test5.py和test5-7-7.py,分別輸入如下代碼,并查看運行結果。55程序運行結果如圖所示。56程序運行結果五、包當所定義的模塊文件越來越多時,應考慮建立子文件夾,將模塊文件分類存放。如現有test1.py、test2.py、test3.py、test4.py、test5.py共5個模塊文件,將這些模塊文件統一存放到包目錄中,如圖所示。57一個完整的自定義包目錄package11.?建立包目錄在項目文件夾上單擊鼠標右鍵,在彈出的快捷菜單中選擇“New(新建)”→“PythonPackage(Python包)”命令,如圖所示,在彈出的窗口中輸入包目錄名,如圖所示。在創建的包目錄下自動生成一個名為“_init_.py”的空文件。該文件用來說明存有該文件的目錄是一個包目錄,使用解釋器搜索路徑時,可以明顯與其他目錄區分開來。5859輸入包目錄名選擇包目錄創建命令2.?創建模塊文件在包中創建模塊文件test1.py、test2.py、test3.py、test4.py,并把上【例】中創建的文件test5.py移至package1包中。3.?導入包模塊利用import語句修改文件test5-7-7.py代碼。60第六章正則表達式6162第一節正則表達式語法與方法第二節正則表達式對象正則表達式語法與方法第一節631.?掌握正則表達式的概念及作用。2.?了解正則表達式的語法。3.?了解正則表達式re模塊的常用方法。64一、正則表達式的概念及作用1.?正則表達式的概念正則表達式又稱規則表達式,是一種文本模式,由一串普通字符和特殊字符組成。正則表達式通常被用來檢索、替換符合某文本模式的內容。2.?正則表達式的作用正則表達式可以用來檢查一個字符串是否含有某個子串、將匹配的子串替換或從某個字符串中取出某個條件的子串等。65二、正則表達式的語法構造正則表達式的方法是使用多種特殊符號和字符(稱為元字符)與運算符,將小的表達式結合在一起創建更大的表達式。正則表達式的組件可以是單個的字符、字符集合、字符范圍、字符間的選擇或所有這些組件的任意
組合。正則表達式是由普通字符及元字符組成的字符模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。661.?普通字符普通字符包括沒有顯式指定為元字符的所有可打印和非打印字符,包括大寫和小寫字母、數字、標點符號和一些特殊符號。下表所示為非打印字符的轉義序列。67非打印字符的轉義序列2.?元字符元字符是具有特殊含義的字符,用于定義模式匹配的規則,一般由特殊符號和字符組成,正則表達式常用的元字符見下表。68正則表達式常用的元字符69正則表達式常用的元字符【例】在PyCharm集成開發環境下編寫程序,實現在已知字符串中查找所有子串的位置。70程序運行結果如圖所示。finditer()方法用于在字符串中找到正則表達式所匹配的所有子串,即返回的是一個迭代器,每個迭代元素是一個Match對象。Match對象是一次匹配的結果,包含了許多匹配的相關信息。71Python的應用三、正則表達式re模塊常用的方法1.?search?(?)方法格式:re.search(pattern,string,flags=0)功能:掃描整個字符串,搜索匹配的第一個位置并返回一個Match對象。若匹配失敗,則返回None。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項,其常用取值見下表。7273參數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對象,因此,可以通過循環的方式來匹配相關操作。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。765.?split?(?)方法格式:re.split(pattern,string,maxsplit=0,flags=0)功能:將一個字符串按照正則表達式的要求分割,分割后返回列表。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;maxsplit是最大的分割次數,默認為0,不限制次數,可以約定將一個字符串分割為幾個子串,將超過最大分割次數的部分作為一個整體,成為最后一個元素;flags用于控制正則表達式的匹配方式,為可選項。776.?sub?(?)方法格式:re.sub(pattern,repl,string,count=0,flags=0)功能:在一個字符串中替換所有匹配正則表達式的子串,并返回替換后的字符串。說明:pattern是要匹配的正則表達式;repl是替換的字符串;string是要匹配的字符串;count是指替換的最大次數,默認值為0,即根據實際匹配數進行替換;flags用于控制正則表達式的匹配方式,為可選項。78正則表達式對象第二節791.?掌握正則表達式的子模式。2.?掌握正則表達式對象。3.?能運用match?(?)、compile?(?)、split?(?)等解決實際問題。80一、compile()方法格式:pile(patten,flags=0)功能:編譯正則表達式,生成一個正則表達式對象。說明:patten是要匹配的正則表達式,flags用于控制正則表達式的匹配方式,其返回值是一個正則表達式對象。81二、子模式與Match對象1.?子模式在正則表達式中,可以使用括號“()”將模式中的子串括起來,以形成一個子模式。將子模式視為一個整體時,它就相當于單個字符,括號中的內容被作為一個整體處理。子模式通過使用括號為整個匹配模式分組,默認情況下,每個分組會自動擁有一個組號,其規則如下:從左到右,以分組的左括號為標志,第一個出現的分組為組號1,第二個出現的分組為組號2,其余以此類推。其中分組0表示對應整個正則表達式。822.?Match對象在正則表達式中,當search()和match()方法匹配時,返回的是一個Match對象。re模塊中提供了一些與Match對象相關的方法,用于獲取匹配結果中的各項數據,見下表。83Match對象的常用方法第七章面向對象編程8485第一節面向對象基礎第二節類的定義與使用第三節數據成員與方法成員第四節類的繼承第五節類的封裝和多態面向對象基礎第一節861.?了解面向對象的含義。2.?了解面向對象的基本特征。3.?了解面向對象的常用術語。87一、面向對象的含義面向對象編程是一種通過對象,把現實世界映射到計算機模型的編程方法。把數據和對數據的操作方法封裝在一起,作為一個相互依存的整體——對象。這里把現實世界的任何事物都當作一個相對獨立的對象來看待;也可以是抽象的事件。88二、面對對象的基本特征1.?封裝封裝是面向對象編程的核心思想,將對象的屬性和行為封裝起來就是類。采用封裝的優點是保證了類內部數據結構的完整性,使用類時不能直接訪問該類中的數據,避免了外部對內部數據的影響,提高了程序的可維護性。面向對象程序設計采用封裝具有以下兩方面含義。(1)將有關的數據和操作代碼封裝在一個類中,各個類之間相對獨立,互不干擾。(2)將類中的某些數據和操作代碼對外隱蔽,即隱蔽內部細節,只留下少量接口,以便與外部聯系,接收外部的消息。892.?繼承繼承主要利用了特定對象之間的共有屬性。如果類之間具有繼承關系,則它們具有以下特性。(1)類之間具有共享特性。(2)類之間具有差別或新增部分。(3)類之間具有層次結構。繼承性是面向對象程序設計語言不同于其他語言的最重要的特點,是其他語言所沒有的。繼承性可以避免公用代碼的重復開發,避免代碼和數據冗余,而且能通過增強一致性來減少模塊間的接口和界面。903.?多態多態是指同一個行為可以有不同的表現形式。多態的意義在于同一操作作用于不同的對象時,可以有不同的解釋,從而產生不同的執行結果,即“以父類的身份出現,以自己的方式工作”。91三、面向對象的常用術語1.?類類(class)是用來描述具有相同的屬性(數據)和行為(方法)的對象集合。它定義了該集合中所有對象共有的數據和方法,對象是類的實例。922.?對象對象是通過類定義的數據結構進行實例化后的變量。對象包括數據成員(類變量和實例變量)和方法。Python和其他編程語言相比,在盡可能不增加新的語法和語義的情況下加入了類機制。面向對象編程的特點如下。(1)完全采用面向對象的思想,是一種高級動態編程語言。(2)支持封裝、繼承、多態、重載和重寫。(3)一切內容都為對象,如字符串、列表、元組、數值等。(4)創建類時,屬性用變量表示,行為用方法表示。933.?實例化實例化就是創建一個類的實例,即類的具體對象。4.?類變量類變量在整個實例化的對象中是公用的。類變量定義在類中且在方法體之外。5.?實例變量實例變量是定義在方法中的變量,只作用于當前實例中。946.?數據成員類變量或實例變量用于處理類及其實例對象的相關數據就是數據成員。7.?方法類中定義的函數常稱為方法。方法是類中一種特殊的函數。8.?方法重寫如果從父類繼承的方法不能滿足子類的要求,可以對其進行改寫,這個過程稱為方法覆蓋,也稱為方法重寫。95類的定義與使用第二節961.?了解類的含義。2.?掌握類的定義方法。3.?掌握類實例化的方法。97一、類的定義Python中使用關鍵字class來定義類。格式:class類名:數據成員名=值
def方法名():方法體98說明:1.類名遵循標識符命名規則,通常情況下建議類名首字母大寫,有多個單詞時遵循“駝峰原則”。2.類的成員包括數據成員和方法成員。數據成員的定義通過直接給數據成員賦值的方式進行,方法成員的定義與函數的定義方式相同。99二、類的實例化類的實例化即由類創建對象。當類定義完成后,并不會真正創建一個實例。格式:對象名=類名([參數1,參數2,…])功能:將類實例化為對象。說明:參數是可選項,根據類的構造方法選擇是否需要參數。通過“對象名.數據成員”或“對象名.方法成員()”的方式來訪問對象的數據成員或方法成員。100
數據成員與方法成員第三節1011.?了解數據成員的類別。2.?了解方法成員的類別。3.?能區分類成員和實例成員。102一、數據成員1.?數據成員的類別Python中類的數據成員包括類成員(類屬性)和實例成員(實例屬性)。類成員是在類中所有方法之外定義的數據成員;實例成員一般是在構造方法__init__()中定義的,定義和使用時必須以self作為前綴。與構造方法相對應的方法稱為析構方法__del__(),是將產生的對象清除后由系統自動調用,一般用來釋放對象所占用的資源。如果沒有明確定義析構方法,系統會提供一個默認的析構方法進行必要的清理工作。1032.?數據成員的區別在主程序(或類的外部)中,實例成員屬于實例(即對象),只能通過對象名訪問;而類成員屬于類,既可以通過類名訪問,也可以通過對象名訪問。3.?類成員的增加與其他面向對象編程的語言不同,在Python中,允許動態地為類和對象增加成員,這是Python動態類型特點的重要體現。4.?屬性值的修改如果修改類成員的值,應通過類修改,而不能通過對象修改。104二、方法成員1.?實例方法實例方法是每個對象所有的、各自獨立的方法。如果類中定義的方法沒有特殊聲明,都是實例方法。類的所有方法都應至少有一個名為self的參數,并且必須是方法的第一個參數。參數self代表將來要創建的對象本身,在外部通過“對象名.方法名()”調用實例方法時并不需要傳遞這個參數;如果在外部通過“類名.方法名()”調用實例方法,則需要顯式地為參數self傳值。在類的實例方法中訪問實例成員時,需以“self.實例成員”形式訪問,訪問類成員時需以“類名.類成員”形式訪問。1052.?類方法類方法是屬于類的方法,不屬于任何實例對象。類方法主要模擬__init__構造方法在定義類的時候使用類的屬性或者給類的屬性賦值。類方法以cls作為第一個參數表示該類自身,使用方法與self類似。在類中定義類方法時用@classmethod修飾。1063.?靜態方法與類方法相似,靜態方法不屬于任何實例對象,它只屬于類。靜態方法主要存放邏輯性的代碼,是一個相對獨立、單純的方法。在類中定義靜態方法時用@staticmethod修飾。靜態方法可以沒有任何參數。同樣,靜態方法既可以通過“類名.方法名()”形式訪問,也可以通過“對象名.方法名()”形式訪問,與類方法相同,靜態方法中也只能訪問類成員,而不能訪問實例成員。107三、訪問權限1.?公有的公有的類成員可以在任何地方被訪問,其成員兩側不帶下畫線,形如
×××。2.?受保護的受保護的類成員可以被其自身及其子類訪問,其成員以單下畫線開頭,形如_×××。1083.?私有的私有的類成員只能被其定義所在的類訪問,其成員以雙下畫線開頭,形如__×××。4.?特殊成員特殊成員的兩側各有雙下畫線,形如__×××__,為系統定義的特殊成員,如構造方法__init__等。109類的繼承第四節1101.?了解繼承的含義。2.?掌握繼承的定義格式。3.?能調用父類方法。111一、繼承關系在程序中,繼承描述的是事物之間的所屬關系,一般來說,子類是基類的特殊化。如圖所示,父類為學生,小學生、初中生、高中生和大學生都是父類派生而來的子類。112繼承關系二、繼承的定義格式繼承的語法格式:class子類名(父類名1[,父類名2…]):
子類成員定義父類寫在括號內,如果子類有多個父類,則需要全部寫在括號內并用逗號“,”分隔,括號后緊跟冒號。113三、父類方法的調用子類除了可以繼承父類成員外,還可以添加自己的一些成員。如果需要在子類中調用父類的方法,可以使用內置方法“super().方法名”或通過“父類名.方法名()”方式來實現。四、多繼承在Python中支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將按順序從左向右進行搜索。114類的封裝和多態第五節1151.?了解類的封裝的含義。2.?了解類的多態的含義。116一、類的封裝在Python中,類的封裝是指將類的某些部分(屬性、方法)隱藏起來,稱為私有屬性或方法。實例化的對象不能直接使用被封裝的方法和屬性。封裝具有一定的保護作用,可以隱藏對象的屬性和方法。在Python中,封裝的格式在本章的第三節訪問權限中已提及,即私有的方法或屬性,在屬性和方法名稱上加雙下畫線“__”前綴,完成封裝。117二、類的多態多態是面向對象編程的又一特性。所謂多態,是指不同的類中使用相同的方法名實現不同的功能。子類繼承父類的成員,可以重寫父類的成員方法,使其滿足自己的需求,這就是多態的表現形式。在Python中,主要通過重寫父類方法來實現多態。118第八章文件與異常119120第一節文件的基本操作第二節文件與目錄操作第三節異常處理文件的基本操作第一節1211.?了解文件操作的類型。2.?能打開與關閉文件。3.?能讀寫文本文件。122一、文件的打開與關閉1.?文件的打開——open?(?)?函數格式: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則表示緩沖區的大小。默認值為
-1,表示使用系統默認的緩沖區大小。(4)encoding:指定文件的編碼方式,只適用于文本模式,可以使用Python支持的任何格式。(5)errors:指定如何處理編碼和解碼錯誤。(6)newline:區分換行符,只適用于文本模式,取值可以是None、""、\n、\r、\r\n。(7)closefd:根據傳入的file參數類型,設置文件是否在文件對象的close?(?)?方法中被關閉。(8)opener:自定義打開文件方式。1252.?文件的關閉——close?(?)?函數在絕大多數情況下,打開文件和關閉文件是一對標配操作。如果不關閉打開的文件,則打開的文件對象會一直留存在內存中,若打開的文件多了,容易出現內存溢出等錯誤。格式:文件對象.close?(?)?功能:將緩沖區的內容寫入文件,同時關閉文件,并釋放文件對象。說明:文件對象是指用open?(?)?函數打開后返回的對象。126二、文本文件的讀寫操作1.?寫操作Python中提供了多種方法進行文本文件的寫操作。(1)write?(?)?方法格式:文件對象.write?(s)功能:將字符串s寫入文件中。說明:write?(?)?方法的返回值為寫入的字符數;在寫模式下打開一個已經存在的文件時,將清除原文件的內容,若要保留原文件的內容,可以采用追加模式;寫入內容時,系統不會添加換行符,如需換行,可在字符串s中加入相應的換行符。127(2)writeline?(?)?方法格式:文件對象.writeline?(slist)功能:將字符串列表slist寫入文本文件中。說明:如果需要一次寫入多個字符串,可將所有字符串放入一個列表中。該方法不會自動添加換行符,也沒有返回值。1282.?讀操作Python中提供了多種方式來讀取文本文件中的內容。(1)read?(?)?方法格式:文件對象.read?([size])功能:從文本文件中讀取內容。說明:從文件對象中讀取size個字符的內容,若省略size,則表示讀取所有內容,返回值為字符串。129(2)readline?(?)?方法格式:文件對象.readline?(?)?功能:從文本文件中讀取一行內容,返回值為字符串。(3)readlines?(?)?方法格式:文件對象.readlines?(?)?功能:從文本文件中讀取全部內容,返回值為字符串列表。130三、文件的常用屬性和方法1.?常用屬性文件的常用屬性見下表。131文件的常用屬性2.?方法除了打開、關閉和讀寫操作外,文件還有一些其他常用的內置方法,見下表。132文件常用的內置方法四、上下文管理語句with在程序中即使編寫了關閉文件的代碼,也無法保證文件一定能正常關閉。若在文件打開之后、關閉之前出現錯誤,將無法正常關閉文件。因此,在管理文件對象時推薦使用上下文管理語句with,可以有效地避免文件非正常關閉的問題。上下文管理語句with可自動管理資源,能保證文件被正確關閉,可以在代碼塊執行完畢自動還原進入該代碼塊的上下文,常用于文件操作、數據庫連接、網絡通信連接等場合。133
文件與目錄操作第二節1341.?了解os、os.path模塊的常用文件和目錄操作方法。2.?能獲取文件的各種屬性,完成路徑的常見操作。135一、os模塊為方便文件與目錄操作,Python中的os模塊提供了一些常用方法,見下表。136os模塊的常用方法二
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030地板產業規劃專項研究報告
- 2025-2030噴灌機行業發展分析及投資價值研究咨詢報告
- 2025-2030醫療旅游產業政府戰略管理與區域發展戰略研究報告
- 2025-2030農藥行業市場深度調研及發展趨勢與投資戰略研究報告
- 2025屆福建龍海市第二中學高三下學期聯合考試英語試題含答案
- 2025-2030全球及中國寵物培訓服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 天津市靜海區重點中學2025年高三下學期一模考試英語試題含解析
- 2025-2030住房租賃產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030中國香腸餡料行業市場發展趨勢與前景展望戰略研究報告
- 2025年江西省橫峰中學高考英語必刷試卷含答案
- 第18課《井岡翠竹》課件-2024-2025學年統編版語文七年級下冊
- 公立醫院成本核算指導手冊
- MOOC 中醫與辨證-暨南大學 中國大學慕課答案
- 年產10噸功能益生菌凍干粉的工廠設計改
- 執行異議及復議課件
- 安全生產管理組織機構設置圖
- 智能健身鏡行業分析及案例
- 中聯HIS系統掛號收費 操 作 說 明
- HIT(肝素誘導的血小板減少癥)課件
- Mayo肘關節功能評分
- 螺栓加工工序卡(共7頁)
評論
0/150
提交評論