《Python程序設計基礎》課件 第5、6章 函數與模塊;正則表達式_第1頁
《Python程序設計基礎》課件 第5、6章 函數與模塊;正則表達式_第2頁
《Python程序設計基礎》課件 第5、6章 函數與模塊;正則表達式_第3頁
《Python程序設計基礎》課件 第5、6章 函數與模塊;正則表達式_第4頁
《Python程序設計基礎》課件 第5、6章 函數與模塊;正則表達式_第5頁
已閱讀5頁,還剩78頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章函數與模塊166167第一節函數定義與調用第二節函數參數第三節函數變量作用域第四節數學函數第五節字符串函數第六節列表函數第七節模塊與包函數定義與調用

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

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

“*實參”的作用。184程序運行結果如圖所示。實例中func()函數的形參為a、b、c和d,第一次調用時傳遞列表,函數執行時,列表中的4個元素會被自動賦給函數中的4個參數。第二次調用時傳遞的是字典,解包時默認傳遞的是字典的鍵。第三次調用時明確是調用字典的鍵值,所以解包時傳遞的是字典的鍵值。185程序運行結果函數變量作用域第三節1861.?理解函數變量的作用域。2.?能區分全局變量與局部變量。187一、局部變量和全局變量Python中的變量根據作用范圍可分為兩種類型:局部變量和全局變量,其作用域及訪問范圍見下表。在函數內部定義的變量只在函數內部起作用,被稱為局部變量。在函數執行結束后,局部變量自動被刪除,不能再使用。在函數外部定義的變量,或在函數內部使用關鍵字global聲明的變量,被稱為全局變量。全局變量自定義起在后續程序范圍內均可訪問。188局部變量和全局變量的作用域及訪問范圍二、關鍵字global在函數內顯式地用關鍵字global進行變量聲明,可以將變量聲明為全局變量?!纠吭赑yCharm集成開發環境下,要求依次輸入若干學生的成績,并統計成績在85分以上的人數,以輸入-1作為結束標記,請利用全局變量來實現。189程序運行結果如圖所示。190程序運行結果數學函數第四節1911.?了解數學函數的含義。2.?了解abs?(?)、max?(?)、min?(?)、sqrt?(?)、pow?(?)、round?(?)等函數的使用方法。192數學函數就是進行數學計算的函數。Python中常用的數學函數見下表。193Python中常用的數學函數【例】在PyCharm集成開發環境下,根據班級學生的成績,統計出成績最高分、最低分、平均分以及成績在60分以下的人數和成績在60~100分的不同分數段的人數。194程序運行結果如圖所示。195程序運行結果字符串函數第五節1961.?了解字符串函數的含義。2.?了解len?(?)、count?(?)、find?(?)、join?(?)、split?(?)、strip?(?)、replace?(?)、upper?(?)、?lower?(?)?等函數的使用方法。197字符串函數是與字符串相關的一些函數,可實現字符串的分解、合并、統計等操作。Python中常用的字符串函數見下表。198Python中常用的字符串函數199Python中常用的字符串函數【例

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

組合。正則表達式是由普通字符及元字符組成的字符模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。2311.?普通字符普通字符包括沒有顯式指定為元字符的所有可打印和非打印字符,包括大寫和小寫字母、數字、標點符號和一些特殊符號。下表所示為非打印字符的轉義序列。232非打印字符的轉義序列2.?元字符元字符是具有特殊含義的字符,用于定義模式匹配的規則,一般由特殊符號和字符組成,正則表達式常用的元字符見下表。233正則表達式常用的元字符234正則表達式常用的元字符【例】在PyCharm集成開發環境下編寫程序,實現在已知字符串中查找所有子串的位置。235程序運行結果如圖所示。finditer()方法用于在字符串中找到正則表達式所匹配的所有子串,即返回的是一個迭代器,每個迭代元素是一個Match對象。Match對象是一次匹配的結果,包含了許多匹配的相關信息。236Python的應用三、正則表達式re模塊常用的方法1.?search?(?)方法格式:re.search(pattern,string,flags=0)功能:掃描整個字符串,搜索匹配的第一個位置并返回一個Match對象。若匹配失敗,則返回None。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項,其常用取值見下表。237238參數flags的常用取值2.?match?(?)方法格式:re.match(pattern,string,flags=0)功能:從字符串的起始位置匹配正則表達式,并返回匹配對象。如果在起始位置沒有匹配成功,則返回None。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。2393.?findall?(?)方法格式:re.findall(pattern,string,flags=0)功能:在字符串中找到正則表達式所匹配的所有子串,并返回一個列表。如果沒有找到匹配的子串,則返回空列表。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。2404.?finditer?(?)方法格式:re.finditer(pattern,string,flags=0)功能:與findall()方法類似,在字符串中找到正則表達式所匹配的所有子串,并將其作為一個迭代器返回。每個迭代器元素是一個Match對象,因此,可以通過循環的方式來匹配相關操作。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;flags用于控制正則表達式的匹配方式,為可選項。2415.?split?(?)方法格式:re.split(pattern,string,maxsplit=0,flags=0)功能:將一個字符串按照正則表達式的要求分割,分割后返回列表。說明:pattern是要匹配的正則表達式;string是要匹配的字符串;maxsplit是最大的分割次數,默認為0,不限制次數,可以約定將一個字符串分割為幾個子串,將超過最大分割次數的部分作為一個整體,成為最后一個元素;fl

溫馨提示

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

評論

0/150

提交評論