Python程序設(shè)計教程(工作手冊式) 課件 情景三 優(yōu)化程序的性能_第1頁
Python程序設(shè)計教程(工作手冊式) 課件 情景三 優(yōu)化程序的性能_第2頁
Python程序設(shè)計教程(工作手冊式) 課件 情景三 優(yōu)化程序的性能_第3頁
Python程序設(shè)計教程(工作手冊式) 課件 情景三 優(yōu)化程序的性能_第4頁
Python程序設(shè)計教程(工作手冊式) 課件 情景三 優(yōu)化程序的性能_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python程序設(shè)計教程

(工作手冊式)情景三

優(yōu)化程序的性能任務(wù)mission1234函數(shù)異常處理面向?qū)ο蟪绦蛟O(shè)計包與庫5文件操作任務(wù)一函數(shù)一.函數(shù)的定義在實際開發(fā)中,如果想把一段功能獨立的代碼進行封裝,我們就可以在這段代碼的上方,先寫上def關(guān)鍵字(def這個關(guān)鍵字是英文單詞define的縮寫,它的中文含義就是定義),def之后先空格,然后再給你這段代碼取個名字;函數(shù)名的后邊緊跟的是一對小括號或者叫圓括號,圓括號的后面再緊跟一個重要的冒號。冒號后一定要換行縮進再定義函數(shù)體,函數(shù)體內(nèi)就是我們要封裝的函數(shù)功能代碼。我們編寫一個say_hello的函數(shù),如右圖所示。defsay_hello():print("Hello!")print("Howareyou!")print("Goodmorning!")二.函數(shù)調(diào)用函數(shù)的定義實現(xiàn)了函數(shù)的功能,函數(shù)定義好了,如果不用放在哪也就只是擺設(shè),怎么將其用起來,即函數(shù)調(diào)用。函數(shù)調(diào)用很簡單,通過函數(shù)名和它后邊那對圓括號,便可完成,后邊那對圓括號叫形參表。我們要調(diào)用say_hello函數(shù),直接使用函數(shù)名加形參表就可以了,如:say_hello()特別需要注意的是:函數(shù)定義了一定要調(diào)用才會工作,你不調(diào)用它是不會主動工作的。三.形參形參是指定義函數(shù)時,圓括號中的參數(shù),形參是用來接收實參的值的,它只能在函數(shù)內(nèi)部作為變量使用。在定義函數(shù)頭部時,圓括號中便可以列舉出需要用到的形參的名稱,多個形參之間用逗號分隔。例如,定義一個求兩數(shù)之和的函數(shù),代碼可以編寫為:這里的num1和num2就是用來表示加數(shù)與被加數(shù)的形參。所謂形參,從字面意思我們可以看出,它只是形式參數(shù),并沒有實際值,當(dāng)函數(shù)需要數(shù)據(jù)傳遞時,就需要在形參表設(shè)置形參,它的作用是等待別人傳遞數(shù)據(jù)給它。形參的作用有兩個:一是告訴外部把值傳到我這里來,二是在函數(shù)內(nèi)部當(dāng)作變量運算。def

sum(num1,num2):四.

實參實參是指調(diào)用函數(shù)時,圓括號中的參數(shù),實參用來存放數(shù)據(jù)并將數(shù)據(jù)傳遞給形參。剛才定義的求和的sum()函數(shù)調(diào)用時,如果是將12和5兩數(shù)求和,可以將被加數(shù)12和加數(shù)5的值寫進實參表,編寫為:實參的作用只有一個:把數(shù)據(jù)傳遞給形參。sum圓括號12逗號5,這里的12和5就是實參。調(diào)用語句就是直接使用已經(jīng)定義好的函數(shù)功能:將實參12傳遞給函數(shù)中的形參num1,實參5將傳遞給函數(shù)中的形參num2。sum(12,5)五.法變量的作用域變量的作用域就是變量在什么范圍內(nèi)起作用,一個變量在不同的位置,它的作用域也是不一樣的。定義在函數(shù)外部的變量稱為全局變量,全局變量的作用域是整個全局;局部變量是在函數(shù)的內(nèi)部定義,只能在其聲明的函數(shù)內(nèi)部使用。defadd():s=n1+n2returnsn1=1n2=2result=add()print('{}+{}={}'.format(n1,n2,result))deflocalvar():

n3=1returnlocalvar()print(n3)六.編寫函數(shù)求圓的面積首先定義一個求圓面積的函數(shù)defcircle(radius);再通過for循環(huán)控制運行3次,在for循環(huán)體中使用input函數(shù)輸入圓的半徑,接著調(diào)用circle(將用戶輸入的半徑傳遞給radius);再通過return

語句返回計算后圓的面積,最后使用print(接收return變量)輸出面積。defcircle1(radius):area=3.14*radius**2returnareaforiinrange(3):r=float(input("請輸入圓的半徑:"))s=circle1(r)print('圓的面積為:{:.3f}'.format(s))七.任務(wù)一小結(jié)通過本次任務(wù)的學(xué)習(xí)和實踐,使我們了解了函數(shù)的功能和特點,掌握了函數(shù)的定義和調(diào)用的方法,并且通過綜合實訓(xùn)的引導(dǎo),能夠熟練運用多種方法編寫函數(shù)來解決實際問題。如果需要編寫的程序非常復(fù)雜,可以將其分解為多個函數(shù),由團隊成員分工協(xié)作一同來完成;函數(shù)也需要合作,合作才能共贏。任務(wù)二面向?qū)ο蟪绦蛟O(shè)計一.面向?qū)ο蟪绦蛟O(shè)計1.對象的引入

對象(object)是一種數(shù)據(jù)抽象或數(shù)據(jù)結(jié)構(gòu)抽象,用來表示程序中需要處理或已處理的信息。Python從設(shè)計之初就是一門面向?qū)ο蟮恼Z言,它有一個重要的概念,即一切皆對象。數(shù)字、字符串、元組、列表、字典、函數(shù)、方法、類、模塊等等都是對象。將對象的特征用狀態(tài)和行為來表示,狀態(tài)就是靜態(tài)屬性,主要指對象包含的各種信息,如學(xué)號、姓名、性別、籍貫等;行為就是動態(tài)屬性,表示對象所具有的功能和操作,如學(xué)習(xí)、吃飯、體育鍛煉等。一.面向?qū)ο蟪绦蛟O(shè)計2.類的定義在Python的世界中也是同樣道理,要創(chuàng)建一個個的對象,就要先創(chuàng)建模具,也是先創(chuàng)建一個類。那如何定義類呢?使用關(guān)鍵字class來表示類,后面加空格再寫類名,類名后同樣需要緊跟一個重要的冒號,即class類名:,在定義類時,類名要遵循大駝峰命名法,比如定義一個汽車類,它的成員變量有:品牌、型號、顏色、價格;它的成員方法有:行駛。classCar:brand='長城'

type='H6''color='黑色'

price='120000'defdrive(self):print('Icanrun')一.面向?qū)ο蟪绦蛟O(shè)計3.對象的創(chuàng)建與使用汽車類創(chuàng)建完成以后,怎么通過汽車類來創(chuàng)建對象呢?這一步非常簡單,可以使用對象名=類名()來完成,此時我們要創(chuàng)建一個car1對象名,則直接通過car1=Car()來完成對象的創(chuàng)建,參考代碼如下:car1=Car() #創(chuàng)建car1對象car1.brand='長安' #訪問成員變量car1.type='CS75'

#調(diào)用成員方法car1.drive()二.封裝1.封裝的引入

封裝(Encapsulation)是對具體對象的一種抽象,即將某些部分隱藏起來,在程序外部看不到,其含義是其他程序無法調(diào)用。要了解封裝,離不開“私有化”,就是將類或者是函數(shù)中的某些屬性限制在某個區(qū)域之內(nèi),外部無法調(diào)用。在類中把某些屬性和方法隱藏起來(或者說定義成私有的),只在類的內(nèi)部使用、外部無法訪問,或者留下少量接口(函數(shù))供外部訪問。Python中私有化的方法也比較簡單,即在準(zhǔn)備私有化的屬性和方法名字前面加兩個下劃線(__)即可。二.封裝2.封裝練習(xí)

將學(xué)生類Student中成員變量年齡age和性別gender私有化;同時將成員方法study()封裝起來,參考代碼如右1所示。接下來,通過學(xué)生類Student創(chuàng)建一個學(xué)生對象jack,再使用對象jack來訪問學(xué)生類Student中的成員變量和成員方法,參考代碼如右2所示。classStudent:name='張三'

__age=18

__gender='男'

def__study(self):print('努力學(xué)習(xí)')

defeat(self):print('認(rèn)真吃飯')

defsleep(self):print('好好休息')jack=Student()print()print(jack.age)print(jack.gender)jack.study()jack.eat()jack.sleep()二.封裝2.封裝練習(xí)但是,隱藏并不是目的,定義了屬性和方法就是為了使用,我們可以在學(xué)生類中再定義兩個公共的方法,讓這兩個方法去訪問同類中的私有屬性和方法,這樣就可以間接讓學(xué)生類外的對象訪問私有屬性和方法了,參考代碼如下。classStudent:name='張三'

__age=18

__gender='男'

def__study(self):print('努力學(xué)習(xí)')

defeat(self):print('認(rèn)真吃飯')

defsleep(self):print('好好休息')

defgetattribute(self):returnself.__age,self.__genderdefgetmethod(self):returnself.__study()jack=Student()print()print(jack.getattribute())jack.getmethod()jack.eat()jack.sleep()三.繼承1.怎么繼承

繼承是指將一個具有廣泛意義的類定義為父類(又稱為基類或超類),新建的類可以繼承一個或者多個父類,新建的類稱為子類(派生類)。子類的創(chuàng)建語法格式如下。class子類名(父類名):

成員變量的定義(新增或修改)成員方法的定義(新增或修改)三.繼承2.單繼承創(chuàng)建一個動物類Animal,該類具有吃、喝、跑、睡4個方法,參考代碼如下。再創(chuàng)建一個貓類Cat,讓它繼承動物類,品種為貍花貓,并且新增一個捉老鼠的方法;再創(chuàng)建一個狗類Dog,讓它繼承動物類,品種為中華田園犬,并且新增一個看家護院的方法;參考代碼如下。classAnimal:defeat(self):print('吃',end='')defdrink(self):print('喝',end='')defrun(self):print('跑',end='')defsleep(self):print('睡')classCat(Animal):breed='貍花貓'

defwork(self):print('捉老鼠')classDog(Animal):breed='中華田園犬'

defwork(self):print('看家護院')四.多態(tài)python中,多態(tài)是指不同的子類對象調(diào)用相同的父類方法,產(chǎn)生不同的執(zhí)行結(jié)果。多態(tài)一般指一類事物多種形態(tài),同時一個類有多個子類,因而多態(tài)的概念依賴于繼承。實現(xiàn)多態(tài)的兩個前提:一是要有繼承(多態(tài)必須發(fā)生在父類和子類之間);二是子類必須重寫父類的方法?,F(xiàn)在我們繼續(xù)使用單繼承的案例來講解多態(tài)的知識點,首先定義一個Animal父類,在該類中寫一個who方法;再寫兩個子類Cat和Dog繼承Animal類,并且每個子類都重寫父類的who方法,輸出該子類動物的名字。classAnimal:

defwho(self):print('我是小動物')classCat(Animal):

defwho(self):print('我是貍花貓')

defwork(self):print('捉老鼠')classDog(Animal):

defwho(self):print('我是中華田園犬')

defwork(self):print('看家護院')a1=Animal()c1=Cat()d1=Dog()a1.who()c1.who()d1.who()五.任務(wù)二小結(jié)通過本次任務(wù)的學(xué)習(xí)和實踐,使我們了解了面向?qū)ο蟪绦蛟O(shè)計的特征和優(yōu)勢,掌握了類的定義、對象的創(chuàng)建和使用;同時能夠熟練完成封裝、繼承和多態(tài)的程序設(shè)計和編碼。封裝增加了代碼的安全性、繼承提高了代碼的可重用性、多態(tài)增強了代碼的靈活度和可擴展性。任務(wù)三

異常處理一.異常處理1.異常的概念當(dāng)我們在寫Python代碼的時候,或多或少都會遇到代碼錯誤或者異常的情況,那異常與錯誤有什么區(qū)別呢?異常是指不完整、不合法輸入,或者計算出現(xiàn)錯誤(但這時的語法和邏輯是正確的);錯誤是指代碼不符合解釋器或者編譯器語法要求。當(dāng)程序運行時,如果Python解釋器遇到一個錯誤,會停止程序的執(zhí)行并且提示一些錯誤信息,這就是異常。通常將程序停止執(zhí)行并且提示錯誤信息這個動作稱之為:拋出異常。在程序開發(fā)時,很難把所有的特殊情況都處理的面面俱到,通過異常捕獲可以針對突發(fā)事件做集中的處理,從而保證程序的穩(wěn)定性和健壯性。二.異常處理2.捕獲異常在程序開發(fā)中,如果對某些代碼的執(zhí)行不確定是否正確,可以增加try來捕獲異常。try:嘗試,下方編寫要嘗試的代碼,不確定是否能正常執(zhí)行的代碼;except:如果不是,下方編寫嘗試失敗的代碼。捕獲異常的語法格式如下:try:

嘗試執(zhí)行的代碼except:

出現(xiàn)錯誤的處理方法二.異常處理3.常見異常序號異常名稱描述1AttributeError對象沒有這個屬性2EOFError沒有內(nèi)建輸入,到達EOF標(biāo)記3IndexError序列中沒有該索引(index)4ImportError導(dǎo)入模塊/對象失敗

5IOError輸入/輸出操作失敗6KeyError映射中沒有該鍵7LookupError無效數(shù)據(jù)查詢的基類

8NameError未聲明/初始化對象(沒有屬性)9OSError操作系統(tǒng)錯誤10SyntaxErrorPython語法錯誤11TypeError對類型無效的操作12TabErrorTab和空格混用13ValueError傳入的參數(shù)無效14WindowsError系統(tǒng)調(diào)用失敗15UnicodeErrorUnicode相關(guān)的錯誤

16ZeroDivisionError除(或取模)零(所有數(shù)據(jù)類型)三.任務(wù)三小結(jié)通過本次任務(wù)的學(xué)習(xí)和實踐,使我們了解了異常處理的功能和特點,掌握了常見異常名稱和錯誤類型捕獲的方法,養(yǎng)成良好的編程習(xí)慣;并且通過綜合實訓(xùn)的引導(dǎo),能夠熟練捕獲異常以及出現(xiàn)錯誤后的處理方法。實際上這和我們做人做事的道理是一樣的,同學(xué)們要努力拓展知識的寬度和深度,面對同一個問題,多思考,多實踐,多改進,多總結(jié)。沒有做不到,只有想不到,這也是學(xué)無止境的道理。任務(wù)四

包與庫一.包與庫1.什么是包簡單來說,包(package)就是一個文件夾,每個包目錄中必須存在__init__.py文件,也就是裝著__init__.py文件的文件夾,該文件的內(nèi)容可以為空。包是一個分層次的文件目錄結(jié)構(gòu),是模塊和子包的集合體。2.

什么是庫

庫(library),是模塊和包的集合,分為標(biāo)準(zhǔn)庫、第三方庫和自定義庫;Python的標(biāo)準(zhǔn)庫也稱為Python內(nèi)置庫,是隨著Python安裝的時候默認(rèn)自帶的庫,常用標(biāo)準(zhǔn)庫如右表所示。常用的標(biāo)準(zhǔn)庫序號名稱功能描述1os操作系統(tǒng)管理2sys解釋器交互3shutil文件管理4math數(shù)學(xué)常數(shù)和數(shù)學(xué)函數(shù)5random隨機數(shù)6datetime日期和時間7time時間訪問和轉(zhuǎn)換8jsonJSON編碼和解碼9glob查找文件10urllibhttp訪問一.包與庫3.包的使用首先打開PyCharm,在當(dāng)前項目(D:\py)上單擊右鍵,選擇“New”,在彈出的子菜單中選擇創(chuàng)建“Pythonpackage”,輸入包名“cqcvc”后回車確定即可;緊接著鼠標(biāo)右鍵單擊該包名,創(chuàng)建三個py文件分別是__init__.py、div.py和leapyear.py。一.包與庫4.導(dǎo)入包(1)import包名[.模塊名[as別名]](2)from包名import模塊名[as別名](3)from包名.模塊名import成員名[as別名]二.標(biāo)準(zhǔn)庫在常用標(biāo)準(zhǔn)庫中有一個操作文件和文件夾的os庫,它提供通用的、基本的操作系統(tǒng)交互功能,主要有:系統(tǒng)相關(guān)變量和操作、文件和目錄相關(guān)操作、執(zhí)行命令和管理進程,使用print(dir(os))可以發(fā)現(xiàn),os標(biāo)準(zhǔn)庫包含了豐富的函數(shù)。os標(biāo)準(zhǔn)庫還包含了一個path子模塊,該子模塊主要提供了豐富的路徑操作方法,處理文件路徑及信息等操作。三.第三方庫1.

NumPy

NumPy是Python的一種開源的數(shù)值計算擴展,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用,可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效。2.

matplotlib

matplotlib是一個python2D繪圖庫,利用它可以畫出許多高質(zhì)量的圖像,開發(fā)者僅需要幾行代碼,便可以生成直方圖,條形圖,餅圖,散點圖等。四.任務(wù)四小結(jié)通過本次任務(wù)的學(xué)習(xí)和實踐,使我們了解了包與庫的區(qū)別和特點,掌握了如何創(chuàng)建包和導(dǎo)入包的三種方法,并且通過綜合實訓(xùn)的引導(dǎo),能夠熟練運用標(biāo)準(zhǔn)庫大幅提高程序開發(fā)的效率;能夠安裝和使用第三方庫完成特定功能的實現(xiàn)。功能強大的第三方庫,可以讓開發(fā)者站在巨人的肩膀上工作,將重要工作由造輪子變成了找輪子,而一個好的輪子有以下特殊:開源、低耦合、有開發(fā)文檔、接口友好、社區(qū)相對活躍等。為了找到好輪子,需要同學(xué)們具備信息檢索能力、外文資料閱讀能力和代碼閱讀能力以及平時的經(jīng)驗積累。正所謂:“不積跬步無以至千里,不積小流無以成江?!薄H蝿?wù)五

文件操作一.文件的打開與關(guān)閉1.文件的打開打開文件使用open內(nèi)置函數(shù)來實現(xiàn),open底層調(diào)用的是操作系統(tǒng)的接口;打開文件可以使用open和withopen兩種方式來完成,具體格式如下。f1=open(文件名,讀寫模式,encoding='utf-8')withopen(文件名,讀寫模式,encoding='utf-8')asf2:序號讀寫模式描述1‘r’以只讀方式打開文件(默認(rèn)方式)2‘w’以只寫方式打開文件(打開時清空文件

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論