版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目八Python模塊任務(wù)8.2CONTENTS目錄創(chuàng)建模塊任務(wù)8.1簡單模塊的使用方法任務(wù)8.1簡單的模塊的使用方法在Python語言中,使用import關(guān)鍵字可以導(dǎo)入整個(gè)模塊,其語法格式如下:8.1.1導(dǎo)入整個(gè)模塊import模塊名[as別名]調(diào)用模塊中的函數(shù)的語法格式如下:模塊名.函數(shù)名示例代碼如下:>>>importmath>>>math.sqrt(5)2.23606797749979當(dāng)編程人員需要用到模塊中特定的某個(gè)函數(shù)時(shí),可以只導(dǎo)入這個(gè)函數(shù),其語法格式如下:8.1.2導(dǎo)入特定的函數(shù)from模塊名import函數(shù)名[as別名]【例8-2】導(dǎo)入模塊中特定的函數(shù)。程序代碼如下:frommathimportsqrt#導(dǎo)入模塊中特定的函數(shù)fromrandomimportrandintasr #給導(dǎo)入的特定函數(shù)指定別名rprint("導(dǎo)入模塊中特定函數(shù)的應(yīng)用\n")number_1=50print(sqrt(number_1))
#不需要使用模塊名作為前綴a=r(1,100)
#使用函數(shù)別名print(a)Python語言允許將一個(gè)模塊中的所有內(nèi)容(包括函數(shù)和變量等)導(dǎo)入當(dāng)前的程序,可以直接使用模塊中的所有函數(shù)而不再使用模塊名作為前綴,其語法格式如下:8.1.3導(dǎo)入模塊中所有函數(shù)from模塊名import*雖然這種方式寫起來比較簡單,但是一般不這樣使用,因?yàn)檫@樣做會降低代碼的可讀性,同時(shí),也會導(dǎo)致命名空間的混亂。示例代碼如下:>>>frommathimport*
#導(dǎo)入標(biāo)準(zhǔn)庫math中的所有內(nèi)容>>>pi
#常數(shù)3.141592653589793>>>e2.718281828459045
#常數(shù)>>>log2(8)
#計(jì)算以2為底的對數(shù)3.0Python解釋器搜索模塊位置的順序如下:(1)搜索當(dāng)前目錄,如果不在當(dāng)前目錄,則搜索在shell變量PYTHONPATH下的每個(gè)目錄。(2)如果都找不到,則Python會繼續(xù)查看默認(rèn)路徑。搜索路徑存儲在sys模塊中的path變量內(nèi),可以通過代碼來驗(yàn)證,具體如下:8.1.4Python搜索路徑>>>importsys>>>print(sys.path)[′′,′C:\\Python\\Python3.11\\Lib\\idlelib′,′C:\\Python\\Python3.11\\python3.11.zip′,′C:\\Python\\Python3.11\\DLLs′,′C:\\Python\\Python3.11\\Lib′,′C:\\Python\\Python3.11′,′C:\\Python\\Python3.11\\Lib\\site-packages′]任務(wù)8.2創(chuàng)建模塊【例8-3】編寫程序,創(chuàng)建“test”模塊,并使用模塊中的函數(shù)。程序代碼如下:defmin_0(x,y):
#自定義計(jì)算較小值函數(shù)ifx>y: #如果x>y成立,則返回y的值returnyelse: #否則返回x的值returnxdefadd_0(a,b): #自定義計(jì)算兩數(shù)之和函數(shù)returna+b8.2.1模塊的創(chuàng)建為了解決測試代碼不在主調(diào)程序中執(zhí)行的問題,Python語言提供了一個(gè)“name”屬性?!皀ame”屬性識別程序的方式是:每個(gè)Python模塊在運(yùn)行時(shí)都會有一個(gè)“name”屬性,如果作為模塊導(dǎo)入,則其“name”屬性的值被自動設(shè)置為模塊名;如果作為程序直接運(yùn)行,則其“name”屬性的值被自動設(shè)置為字符串“main”。在模塊被引用時(shí),如果模塊中的某一程序塊不執(zhí)行,則編程人員可以通過判斷“name”屬性的值來實(shí)現(xiàn)。例如,上述“test.py”文件的代碼可做如下修改:8.2.2“__name__”屬性defmin_0(x,y):
#自定義計(jì)算較小值函數(shù)ifx>y: #如果x>y成立,則返回y的值returnyelse:
#否則返回x的值returnx"name"defadd_0(a,b): #自定義計(jì)算兩數(shù)之和函數(shù)returna+b#用于測試ifname==′main′: #識別當(dāng)前的運(yùn)行方式
print(′這是用于測試的代碼′)
print("-------------------------")
r=min_0(20,15)
print(′測試20和15的較小值為:′,r)
p=add_0(20,15)
print(′測試20和15的和為:′,p)8.2.2“__name__”屬性dir([object])8.2.3dir()函數(shù)和reload()函數(shù)1.dir()函數(shù)dir()函數(shù)的語法格式如下:示例代碼如下:>>>importstring #導(dǎo)入內(nèi)建string模塊>>>dir(string)[′Formatter′,′Template′,′_ChainMap′,′all′,′builtins′,′cached′,′doc′,′file′,′loader′,′name′,′package′,′spec′,′_re′,′_sentinel_dict′,′_string′,′ascii_letters′,′ascii_lowercase′,′ascii_uppercase′,′capwords′,′digits′,′hexdigits′,′octdigits′,′printable′,′punctuation′,′whitespace′]reload(module_name)8.2.3dir()函數(shù)和reload()函數(shù)2.reload()函數(shù)reload()函數(shù)的語法格式如下:其中,module_name表示一個(gè)模塊對象,其返回值也是一個(gè)模塊對象。示例代碼如下:>>>importsys,importlib#導(dǎo)入sys模塊和importlib包>>>importlib.reload(sys)<module′sys′(built-in)>8.2.4Python語言中的包包是Python模塊文件所在的目錄,且該目錄下必須存在“init.py”文件(文件內(nèi)容可以為空)。常見的package_a包和package_b包結(jié)構(gòu)如下:package_a|——init.py|——module_a1.py|——module_a2.py|——module_a3.pypackage_b|——init.py|——module_b1.py|——module_b2.py|——module_b3.pymain.py8.2.4Python語言中的包如果“main.py”文件需要引用package_a包中的module_a1模塊,則可以使用下列語句實(shí)現(xiàn):frompackage_aimportmodule_a1importpackage_a.module_a1在package_a包中,如果module_a1模塊想要引入另一個(gè)package_b包,則Python解釋器默認(rèn)是找不到package_b包的。但是,可以在package_a包的“init.py”文件中添加“sys.path.append(′../′)”語句,并在package_a包的所有模塊中都添加“*importinit”語句來實(shí)現(xiàn)。謝謝您的欣賞項(xiàng)目九Python文件操作任務(wù)9.2任務(wù)9.3CONTENTS目錄讀寫文件文件位置任務(wù)9.4任務(wù)9.1文件的打開和關(guān)閉文件和文件夾的相關(guān)操作任務(wù)9.1文件的打開和關(guān)閉文本文件存儲的是常規(guī)字符串,由若干文本行組成,通常每行以換行符‘\n’結(jié)尾。文本文件在磁盤上是以二進(jìn)制形式存儲的,在讀取和查看文本文件時(shí)字處理軟件能自動識別,并使用正確的編碼方式解碼還原為字符串信息。9.1.1文件的概念二進(jìn)制文件將信息以字節(jié)串(bytes)形式進(jìn)行存儲,無法用記事本或其他普通字處理軟件直接進(jìn)行編輯,也無法直接閱讀和理解,需要使用與之相關(guān)的軟件將其解碼后才能正確地讀取、顯示、修改或執(zhí)行。1.文本文件2.二進(jìn)制文件在Python語言中,無論文本文件還是二進(jìn)制文件,操作步驟基本一致,如下:(1)打開或新建文件,并創(chuàng)建文件對象。(2)對文件內(nèi)容進(jìn)行讀取、寫入、刪除、修改等操作。(3)關(guān)閉文件并保存文件內(nèi)容。9.1.2文件的打開Python語言中內(nèi)建了文件對象,通過open()函數(shù)可按照指定的打開方式打開文件,并創(chuàng)建文件對象。open()函數(shù)的語法格式如下:文件對象名=open(文件名[,打開方式])在Python語言中,雖然文件會在程序退出后自動關(guān)閉,但是考慮到數(shù)據(jù)的安全性,每次使用完文件后,都需要使用close()函數(shù)關(guān)閉文件。close()函數(shù)的語法格式如下:9.1.3文件的關(guān)閉例如,以只寫方式打開一個(gè)名為“test.txt”的文件,然后關(guān)閉文件。程序代碼如下:文件對象名.close()file=open(′test.txt′,′w′)
#以只寫方式打開一個(gè)名為“test.txt”的文件file.close() #關(guān)閉文件在Python程序中,讀寫文件應(yīng)優(yōu)先考慮使用上下文管理語句,其語法格式如下:9.1.4上下文管理語句其中,context_expression為表達(dá)式;target(s)為對象名。當(dāng)對文件內(nèi)容進(jìn)行讀寫時(shí),可使用with語句,其語法格式如下:withcontext_expression[astarget(s)]:with-bodywithopen(文件名[,打開方式])as文件對象名:#通過文件對象名讀寫文件內(nèi)容語句示例代碼如下:withopen(′test.txt′,′r′)assrc:src.read()任務(wù)9.2讀寫文件1.read()函數(shù)
read()函數(shù)用于從文件中讀取指定的字節(jié)數(shù),如果未給定參數(shù)或參數(shù)為負(fù),則讀取整個(gè)文件內(nèi)容,其語法格式如下:文件對象名.read([size])9.2.1讀文件
【例9-2】使用read()函數(shù)讀取“test.txt”文件。程序代碼如右:print("使用read()函數(shù)讀取“test.txt”文件\n")#以只讀方式打開“test.txt”文件withopen(′test.txt′,′r′)asfile:line=file.read(10) #讀取文件中的前10字節(jié)print("讀取文件的前10字節(jié)并輸出")print(line) #輸出文件中的前10字節(jié)print("-------------------------")#讀取文件中剩余的所有內(nèi)容content=file.read()print("讀取文件中剩余的所有內(nèi)容并輸出")print(content)
#輸出文件中剩余的所有內(nèi)容2.readline()函數(shù)
readline()函數(shù)的語法格式如下:文件對象名.readline([size])9.2.1讀文件【例9-3】使用readline()函數(shù)讀取“test.txt”文件。程序代碼如下:print("使用readline()函數(shù)讀取“test.txt”文件\n")#以只讀方式打開“test.txt”文件withopen(′test.txt′,′r′)asfile:line_1=file.readline()
#讀取第一行
print(line_1)
#輸出print("-------------------------")line_2=file.readline(10) #讀取第二行的前10個(gè)字符print(line_2)
#輸出print("-------------------------")
3.readlines()函數(shù)
readlines()函數(shù)用于讀取所有行(直到結(jié)束符EOF,EndOfFile)并返回列表,列表中每個(gè)元素為文件中的一行數(shù)據(jù),其語法格式如下:文件對象名.readlines()9.2.1讀文件【例9-4】使用readlines()函數(shù)讀取“test.txt”文件。程序代碼如下:print("使用readlines()函數(shù)讀取“test.txt”文件\n")#以只讀方式打開“test.txt”文件withopen(′test.txt′,′r′)asfile:content=file.readlines()print(content)
#讀取所有行并返回列表#輸出列表print("----------------------------")fortempincontent: #遍歷列表print(temp)1.write()函數(shù)
write()函數(shù)用于向文件中寫入指定字符串,其語法格式如下:文件對象名.write(str)9.2.2寫文件【例9-5】向“test_0.txt”文件中寫入如下數(shù)據(jù)。ChineseMathEnglishPhysicsChemistryArtistGeography程序代碼如下:1.write()函數(shù)9.2.2寫文件#print("使用write()函數(shù)向“test_0.txt”文件中寫入數(shù)據(jù)\n")#file=open(′test_0.txt′,′w′)#打開名為“test_0.txt”的文件withopen(′test_0.txt′,′w′)asfile:#向文件中輸入字符串file.write(′Chinese\n′)file.write(′Math\n′)file.write(′English\n′)file.write(′Physics\n′)file.write(′Chemistry\n′)file.write(′Artist\n′)file.write(′Geography\n′)file.close()
#關(guān)閉文件2.writelines()函數(shù)
writelines()函數(shù)用于向文件中寫入一個(gè)序列字符串。這個(gè)序列字符串是由迭代對象產(chǎn)生的(如一個(gè)字符串列表),其語法格式如下:文件對象名.writelines(sequence)9.2.2寫文件【例9-6】使用writelines()函數(shù)向已有的“test_0.txt”文件中追加如下數(shù)據(jù)。1.HelloWorld!2.Hello!WelcometoPython!如果要向文件中追加數(shù)據(jù),則需要以追加方式“a”打開文件。在使用writelines()函數(shù)寫入數(shù)據(jù)時(shí),同樣不會自動在列表末尾添加換行符,需要手動添加。程序代碼如下:9.2.2寫文件#定義列表并賦值list_0=[′1.HelloWorld!′,′2.Hello!WelcometoPython!′]#以追加方式打開原有的“test_0.txt”文件withopen(′test_0.txt′,′a′)asfile:file.writelines(list_0[0])#向文件中追加字符串列表file.writelines(′\n′)file.writelines(list_0[1])file.writelines(′\n′)file.close() #關(guān)閉文件任務(wù)9.3文件位置tell()函數(shù)返回文件的當(dāng)前位置,即文件位置指針的當(dāng)前位置,其語法格式如下:文件對象名.tell()9.3.1獲取當(dāng)前讀寫位置【例9-8】使用tell()函數(shù)獲取文件當(dāng)前的讀寫位置。程序代碼如下:print("使用tell()函數(shù)獲取文件當(dāng)前的讀寫位置\n")print("-------------------------\n")#以只讀方式打開“test_0.txt”文件withopen(′test_0.txt′,′r′)asfile:line=file.read(7)#讀取文件中的前7字節(jié)print(line) #輸出文件中的前7字節(jié)
9.3.1獲取當(dāng)前讀寫位置
p=file.tell()
#獲取文件位置指針的當(dāng)前位置
print("當(dāng)前位置:",p) #輸出當(dāng)前位置line=file.read(5) #繼續(xù)向后讀取5字節(jié)print(line) #輸出讀取到的數(shù)據(jù)p=file.tell() #獲取文件位置指針的當(dāng)前位置print("當(dāng)前位置:",p) #輸出當(dāng)前位置file.close()seek()函數(shù)用于移動文件位置指針到指定位置,其語法格式如下:文件對象名.seek(offset[,whence])9.3.2定位到某個(gè)位置【例9-9】創(chuàng)建“seek.txt”文件,并將“Hello!WelcometoPython!”存入文件,再讀取“Python”輸出到終端。程序代碼如下:file_name=input(′輸入新建的文件名:′)
#輸入文件名withopen(file_name,′w+′)asfile:
#新建文件并以讀寫方式打開file.write("Hello!WelcometoPython!") #將字符串寫入文件file.seek(17)
#將文件位置指針移到第17個(gè)字符處string_0=file.read(6)
#讀取6個(gè)字符給變量string_0print(string_0) #輸出file.close() #關(guān)閉文件
任務(wù)9.4文件和文件夾相關(guān)操作9.4.1文件相關(guān)操作rename()函數(shù)存放在Python語言中的os模塊內(nèi),用于對文件進(jìn)行重命名操作,其語法格式如下:os.rename(src,dst)1.rename()函數(shù)其中,src表示要修改的文件名;dst表示修改后的新文件名。例如,將“file_12.txt”文件重命名為“file_20.txt”。示例代碼如下:>>>importos>>>os.rename("file_12.txt","file_20.txt")9.4.1文件相關(guān)操作remove()函數(shù)在Python中的os模塊中,用于對文件進(jìn)行刪除操作,其語法格式如下:os.remove(path)2.remove()函數(shù)其中,path表示指定路徑下的文件。例如,刪除當(dāng)前路徑下“file_20.txt”文件的示例代碼如下:>>>importos>>>os.remove("file_20.txt")9.4.2文件夾相關(guān)操作os模塊中的mkdir()函數(shù)用于創(chuàng)建文件夾。示例代碼如下:>>>importos>>>os.mkdir("file0")1.創(chuàng)建文件夾os模塊中的rmdir()函數(shù)用于刪除文件夾。示例代碼如下:>>>importos>>>os.rmdir("file0")2.刪除文件夾9.4.2文件夾相關(guān)操作os模塊中的getcwd()函數(shù)用于獲取文件夾的當(dāng)前目錄。示例代碼如下:>>>importos>>>os.getcwd()′C:\\Python\\Python3.11′3.獲取當(dāng)前目錄os模塊中的chdir()函數(shù)用于改變文件夾的默認(rèn)目錄。例如,將文件夾的當(dāng)前目錄改變?yōu)樯弦患壞夸浀拇a如下:>>>importos>>>os.chdir("../")4.改變默認(rèn)目錄9.4.2文件夾相關(guān)操作os模塊中的listdir()函數(shù)用于獲取文件夾的目錄列表。例如,獲取文件夾當(dāng)前路徑下的子目錄列表的代碼如下:>>>importos>>>os.listdir("./")5.獲取目錄列表9.4.3批量修改文件名【例9-11】批量修改文件名。程序代碼如下:#批量在文件名前加前綴importosflag=1
#1表示添加標(biāo)志,2表示刪除標(biāo)志os.chdir("員工信息") #將當(dāng)前工作目錄切換到“員工信息”目錄folder_name=′./′ #獲取指定路徑的所有文件名dir_list=os.listdir(folder_name)
#遍歷輸出所有文件名fornameindir_list:print(name)ifflag==1:new_name="Bolin-"+nameelifflag==2:number=len("Bolin-")new_name=name[number:]print(new_name)os.rename(folder_name+name,folder_name+new_name)謝謝您的欣賞項(xiàng)目十Python異常處理任務(wù)10.2任務(wù)10.3CONTENTS目錄異常處理拋出異常任務(wù)10.4任務(wù)10.1Python語言中的異常自定義異常任務(wù)10.1Python語言中的異常程序在執(zhí)行過程中,由于本身編寫問題或外界環(huán)境改變而引發(fā)的錯(cuò)誤稱為異常。引發(fā)異常的原因有很多,如下標(biāo)越界、文件不存在、網(wǎng)絡(luò)異常、數(shù)據(jù)類型錯(cuò)誤等。示例代碼如下:10.1.1異常的概念>>>5+"3"Traceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>5+"3"TypeError:unsupportedoperandtype(s)for+:′int′and′str′>>>10/0Traceback(mostrecentcalllast):File"<pyshell#1>",line1,in<module>10/0ZeroDivisionError:divisionbyzero當(dāng)嘗試訪問未知的對象屬性時(shí),會引發(fā)AttributeError(嘗試訪問未知的對象屬性)異常。示例代碼如下:10.1.2常見的異常classAnimal():name=′tiger′animal=Animal()print(animal.name)print(animal.color)1.AttributeError異常Animal類沒有定義color屬性,在創(chuàng)建Animal類的實(shí)例后,訪問它的color屬性時(shí),會出現(xiàn)AttributeError異常,如圖10-1所示。10.1.2常見的異常1.AttributeError異常圖10-1
AttributeError異常當(dāng)嘗試以只讀方式打開一個(gè)不存在的文件時(shí),會引發(fā)FileNotFoundError(找不到文件,Python3.2以前是IOError)異常。示例代碼如下:10.1.2常見的異常file=open(′111.txt′)2.FileNotFoundError異常在本示例中,使用open()函數(shù)打開名為“111.txt”的文件,當(dāng)該文件不存在時(shí),會出現(xiàn)FileNotFoundError異常,如圖10-2所示。圖10-2
FileNotFoundError異常Python解釋器是通過代碼塊的縮進(jìn)來判斷代碼之間的邏輯關(guān)系的。當(dāng)縮進(jìn)錯(cuò)誤時(shí),會引發(fā)IndentationError(縮進(jìn)錯(cuò)誤)異常。示例代碼如下:10.1.2常見的異常list_1=[1,2,3,4]foriinlist_1:print(i)3.IndentationError異常由于for循環(huán)語句塊沒有縮進(jìn),因此導(dǎo)致程序出現(xiàn)IndentationError異常,如圖10-3所示。圖10-3
IndentationError異常當(dāng)使用序列中不存在的索引時(shí),會引發(fā)IndexError(索引超出序列的范圍)異常。示例代碼如下:10.1.2常見的異常list_1=[1,2,3,4,5]print(list_1[5])4.IndexError異常由于list_1列表中沒有索引為5的元素,因此當(dāng)使用索引5訪問列表元素時(shí),程序出現(xiàn)IndexError異常,如圖10-4所示。圖10-4
IndexError異常當(dāng)使用字典中不存在的“鍵”時(shí),會引發(fā)KeyError(字典中查找一個(gè)不存在的關(guān)鍵字)異常。示例代碼如下:10.1.2常見的異常dict_1={′one′:1,′two′:2,′three′:3}print(dict_1[′one′])print(dict_1[′three′])print(dict_1[′four′])5.KeyError異常由于字典中只有“one”“two”和“three”3個(gè)鍵,因此當(dāng)獲取“four”鍵對應(yīng)的值時(shí),程序出現(xiàn)KeyError異常,如圖10-5所示。10.1.2常見的異常圖10-5
KeyError異常當(dāng)嘗試訪問一個(gè)未聲明的變量時(shí),會引發(fā)NameError(嘗試訪問一個(gè)不存在的變量)異常。示例代碼如下:10.1.2常見的異常a=1c=a+bprint(c)6.NameError異常當(dāng)執(zhí)行程序時(shí),由于Python解釋器在任何命名空間中都沒有找到變量b,因此導(dǎo)致程序出現(xiàn)NameError異常,如圖10-6所示。圖10-6
NameError異常當(dāng)Python解釋器發(fā)現(xiàn)語法錯(cuò)誤時(shí),會引發(fā)SyntaxError異常。示例代碼如下:10.1.2常見的異常list_1=["a","b","c","d","e"]foriinlist_1print(i)7.SyntaxError異常由于for循環(huán)的后面缺少冒號,因此導(dǎo)致程序出現(xiàn)SyntaxError異常,如圖10-7所示。圖10-7
SyntaxError異常當(dāng)將不同類型的數(shù)據(jù)進(jìn)行運(yùn)算操作時(shí),有時(shí)會引發(fā)TypeError(不同類型間的無效操作)異常。示例代碼如下:10.1.2常見的異常birth=input(′birth:′)ifbirth<2000:print("00前")else:print("00后")8.TypeError異常10.1.2常見的異常8.TypeError異常input()函數(shù)返回的數(shù)據(jù)類型是字符串。由于字符串類型數(shù)據(jù)不能直接與數(shù)字類型數(shù)據(jù)進(jìn)行比較,因此導(dǎo)致程序出現(xiàn)TypeError異常,如圖10-8所示。圖10-8
TypeError異常10.1.2常見的異常9.ValueError異常當(dāng)傳給函數(shù)的參數(shù)類型不正確時(shí),會引發(fā)ValueError(傳入無效參數(shù))異常。示例代碼如下:圖10-9
ValueError異常importmathmath.sqrt(-10)由于int()函數(shù)傳入了無效的字符串類型參數(shù),因此導(dǎo)致程序出現(xiàn)ValueError異常,如圖10-9所示。10.1.2常見的異常10.ZeroDivisionError異常當(dāng)除數(shù)為零時(shí),會引發(fā)ZeroDivisionError(除數(shù)為零)異常。示例代碼如下:圖10-10
ZeroDivisionError異常a=100/0print(a)由于零不能作為除數(shù),因此導(dǎo)致程序出現(xiàn)ZeroDivisionError異常,如圖10-10所示。10.1.3Python語言中的其他異常表10-1
Python語言中的其他異常異常名稱描述BaseException所有異常的基類ArithmeticError所有數(shù)值計(jì)算錯(cuò)誤的基類AssertionError斷言語句失敗DeprecationWarning關(guān)于被棄用的特征的警告EnvironmentError操作系統(tǒng)錯(cuò)誤的基類EOFError沒有內(nèi)建輸入,到達(dá)EOF標(biāo)記任務(wù)10.2異常處理1.捕獲簡單異常捕獲簡單異常的語法格式如下:try:#可能引發(fā)異常語句塊exceptException:#異常處理語句塊10.2.1try...except語句
其中,try語句塊中包含可能引發(fā)異常的語句;except中的語句塊用于捕獲相應(yīng)的異常;Exception為異常類的名稱。2.捕獲多個(gè)異常
捕獲多個(gè)異常的結(jié)構(gòu)類似于多分支選擇結(jié)構(gòu),一旦try語句塊中的語句拋出異常,就按順序依次檢測并與except語句塊匹配。如果某個(gè)except語句塊捕獲到了異常,則其他except語句塊將不再捕獲異常。捕獲多個(gè)異常的語法格式如下:try:#可能引發(fā)異常的語句塊exceptException_1:#異常處理語句塊1exceptException_2:#異常處理語句塊2exceptException_3:#異常處理語句塊3...10.2.1try...except語句3.捕獲所有異常捕獲所有異常的語法格式如下:try:#可能引發(fā)異常語句塊except:#異常處理語句塊10.2.1try...except語句【例10-3】捕獲所有的異常。程序代碼如右:print("捕獲兩個(gè)數(shù)相除的異常\n")try:number_1=float(input(′請輸入被除數(shù):′))number_2=float(input(′請輸入除數(shù):′))number_3=number_1/number_2print(′兩個(gè)數(shù)相除,商為:′,number_3)except:print("****************************")print(′出現(xiàn)異常!′)4.捕獲異常的信息描述10.2.1try...except語句【例10-4】捕獲異常的信息描述。程序代碼如下:print("捕獲兩個(gè)數(shù)相除的異常\n")try:number_1=float(input(′請輸入被除數(shù):′))number_2=float(input(′請輸入除數(shù):′))number_3=number_1/number_2print(′兩個(gè)數(shù)相除,商為:′,number_3)exceptExceptionasresult:print("****************************")print("捕獲到異常:%s"%result)10.2.2try...except...else語句
try...except...else語句還有一個(gè)可選的else語句塊,如果要使用該語句塊,則必須將其放在except語句塊之后。在try語句塊中的語句沒有發(fā)生任何異常時(shí),將執(zhí)行該語句塊。try...except...else的語法格式如下:try:#可能引發(fā)異常語句塊exceptException[asresult]:#異常處理語句塊else:#如果try語句塊中的語句沒有引發(fā)異常,則執(zhí)行該語句塊10.2.3try...except...finally語句
在程序執(zhí)行過程中,有一種情況是,無論是否捕獲到異常,程序都要執(zhí)行終止行為(如關(guān)閉文件),這時(shí)可以使用finally語句塊進(jìn)行處理。通常情況下,finally語句塊用于釋放資源。try...except...finally的語法格式如下:try:#可能引發(fā)異常的語句塊exceptException[asresult]:#異常處理語句塊finally:#無論try語句塊中的語句是否引發(fā)異常,都會執(zhí)行該語句塊任務(wù)10.3拋出異常格式1和格式2是對等的,都會引發(fā)指定異常類對象。格式1可以隱式地創(chuàng)建異常類的實(shí)例對象;格式2是最常見的,會直接提供一個(gè)異常類的實(shí)例對象;格式3用于重新引發(fā)剛發(fā)生的異常。raise異常類
#格式1,引發(fā)異常時(shí)會隱式地創(chuàng)建異常類對象raise異常類對象 #格式2,引發(fā)異常類對象對應(yīng)的異常raise
#格式3,重新引發(fā)剛發(fā)生的異常10.3.1raise語句使用raise語句能顯式地觸發(fā)異常,其語法格式如下:示例代碼如下:raise異常名稱10.3.1raise語句使用異常名引發(fā)異常,是指當(dāng)raise語句指定異常名時(shí),會創(chuàng)建該類的實(shí)例對象,然后引發(fā)異常,其語法格式如下:1.使用異常名引發(fā)異常>>>raiseNameErrorTraceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木工工藝研發(fā)與創(chuàng)新資助合同
- 2025年門禁產(chǎn)品銷售與客戶定制化解決方案合同范本3篇
- 2025年度農(nóng)藥殘留檢測技術(shù)服務(wù)合同書2篇
- 2025年度噴泉景區(qū)旅游推廣及市場營銷合同
- 艾滋病病毒王利沙HIV講解
- 2025年度宅基地使用權(quán)及房產(chǎn)繼承合同
- 2025年度旅游行業(yè)導(dǎo)游及服務(wù)人員派遣合同2篇
- 二零二五年度雛雞養(yǎng)殖與休閑農(nóng)業(yè)融合發(fā)展合同4篇
- 2025版民間抵押資產(chǎn)處置合同樣本3篇
- 2025年建筑行業(yè)自動化的機(jī)遇與挑戰(zhàn)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 國旗班指揮刀訓(xùn)練動作要領(lǐng)
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2021-2022學(xué)年遼寧省重點(diǎn)高中協(xié)作校高一上學(xué)期期末語文試題
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計(jì)算100道及答案
- 墓地個(gè)人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標(biāo)全國Ⅰ卷語文高考真題試卷(含答案)
評論
0/150
提交評論