版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python語言程序設(shè)計(jì)PythonLanguageProgramming9模塊和面向?qū)ο竽KPython模塊模塊化架構(gòu)包的管理庫的引用面向?qū)ο竺嫦驅(qū)ο蟮母拍铑惻c實(shí)例面向?qū)ο蟮奶卣髂KPython模塊模塊化架構(gòu)包的管理庫的引用python的標(biāo)準(zhǔn)庫模塊類型名稱描述文本String通用字符串操作Re正則表達(dá)式操作二進(jìn)制數(shù)據(jù)Struct將字節(jié)解析為打包的二進(jìn)制數(shù)據(jù)Codecs注冊表與基類的編解碼器數(shù)據(jù)類型Datatime基于日期和時間工具Calendar通用月份函數(shù)Types淺拷貝與深拷貝數(shù)學(xué)Math數(shù)學(xué)常用函數(shù)Cmath復(fù)數(shù)數(shù)學(xué)函數(shù)Random生成偽隨機(jī)數(shù)表9.1Python常用模塊舉例模塊化架構(gòu)
頂層文件a.py模塊b.py模塊c.py庫模塊圖9-1Python程序架構(gòu)包的組成Python程序一般由三部分組成:包(package)、模塊(module)和函數(shù)(function)。其中包是由一系列模塊組成的集合,模塊是處理某一類問題的函數(shù)和類的集合模塊1函數(shù)類模塊2函數(shù)類模塊n函數(shù)類……包圖9-2包、模塊和和函數(shù)之間的關(guān)系python包管理圖9-3Python包管理python包管理4種包管理工具:distutilsdistutils是Python標(biāo)準(zhǔn)庫的一部分,最初為開發(fā)者提供一種方便的打開方式,同時也為使用者提供了方便的包安裝方式。setuptoolssetuptools是對distutils的增強(qiáng),引入了包依賴管理。setuptools可以為Python包創(chuàng)建egg文件,Python與egg文件的關(guān)系,相當(dāng)于java與jar包的關(guān)系。setuptools提供的easy_install腳本可以用來安裝egg包。python包管理4種包管理工具:easy_installeasy_install是由PEAK(PythonEnterpriseApplicationKit)開發(fā)的setuptools包里帶的一個命令,所以使用easy_install實(shí)際上是在調(diào)用setuptools來完成安裝模塊的工作。easy_install可以自動從PyPI[/pypi](第三方庫)上下載相關(guān)的包,并完成安裝,升級。pippip是安裝管理Python包的標(biāo)準(zhǔn)工具,2008年發(fā)布,它是對easy_install的一種增強(qiáng),也是其替代品,但它仍有大量的功能建立在setuptools組件之上。同樣可以從PyPI上自動下載安裝包。在pip中,安裝所需要的包都要先下載,所以不會出現(xiàn)安裝了一部分,另一部分沒有安裝的情況,且所有的安裝包都會被跟蹤。python包管理2種包格式:EggsEggs格式是setuptools引入的一種文件格式,它使用.egg作為擴(kuò)展名,用于Python第三方庫的安裝。setuptools可以識別這種格式,并解析和安裝它。pip支持eggs,但希望不再使用它。WheelWheel本質(zhì)上是一個zip包格式,它使用.whl擴(kuò)展名,用于Python第三方庫的安裝,它的出現(xiàn)是為了替代Eggs。Wheel和eggs格式的具體區(qū)別,請參見官方文檔/。python庫的安裝pip一般高版本的Python的在安裝過程中會自動設(shè)置環(huán)境變量,且自帶pip的安裝若無,進(jìn)行手動設(shè)置環(huán)境變量的操作右鍵【計(jì)算機(jī)】,選擇【屬性】在左側(cè)欄找到【高級系統(tǒng)設(shè)置】打開命令行,輸入python,出現(xiàn)以下提示即為配置成功。點(diǎn)擊【環(huán)境變量】在系統(tǒng)變量中找到Path,雙擊。在字符串的末尾加一個“;”,再輸入Python的安裝路徑,一路點(diǎn)擊【確定】,直到設(shè)置完成。打開命令行,輸入python,檢驗(yàn)是否配置成功。python庫的安裝wheelwheel的安裝Python第三方庫官網(wǎng)[/pypi]中下載將下載好的文件移入Python安裝目錄中scripts文件夾中打開命令行,進(jìn)入scripts文件夾,輸入命令pipinstallpandas-0.18.1-cp35-cp35m-win_amd64.whl,【Enter】鍵入python庫的安裝exe文件exe的安裝有些Python的第三方庫可以直接下載到.exe類型的可安裝文件,如pyparsing庫。在PyPI官網(wǎng)上搜索pyparsing,下載列表見下圖,我們只需選擇相應(yīng)的版本下載安裝包后,雙擊,按照安裝提示步驟安裝即可。圖9-4pyparsing庫可下載的安裝文件列表庫的引用Python中的庫主要分為三大類,一類是標(biāo)準(zhǔn)模塊,第二類是第三方模塊,第三類是自定義模塊。無論是第三方庫還是標(biāo)準(zhǔn)庫以及我們自定義的庫,在使用之前都需要進(jìn)行導(dǎo)入。導(dǎo)入方法import方式from方式import方式importmodname1importmodname2……importmodnameN也可以在一行內(nèi)導(dǎo)入多個模塊:importmodname1[,modname2[,…modnameN]](這樣書寫的代碼可讀性較差,不推薦)注1、如果import語句是在代碼的頂層,則它的作用域?yàn)槿?;如果import語句在某個函數(shù)中,則它的作用域僅局限于該函數(shù)。2、如果import語句是在代碼的頂層,則它的作用域?yàn)槿郑蝗绻鹖mport語句在某個函數(shù)中,則它的作用域僅局限于該函數(shù)。from方式fromturtleimportPent=Pen()
注
1、代碼的第一行導(dǎo)入了turtle模塊中的Pen函數(shù),第二行調(diào)用Pen()函數(shù)時,不需要再在函數(shù)前面加模塊的名稱,不會報錯。2、也可以把一個模塊中的所有名稱(包括函數(shù)的、方法的、屬性的等等)都導(dǎo)入到當(dāng)前命名空間中:
frommodnameimport*
但是在實(shí)際編碼中,很可能導(dǎo)入進(jìn)來的名稱會覆蓋掉當(dāng)前命名空間中已有的名稱,因此不推薦面向?qū)ο竺嫦驅(qū)ο蟮母拍铑惻c實(shí)例面向?qū)ο蟮奶卣髅嫦驅(qū)ο蟮母拍铑?class):對具有相同數(shù)據(jù)和方法的一組對象的描述或定義。對象(object):對象是一個類的實(shí)例。實(shí)例(instance):一個對象的實(shí)例化實(shí)現(xiàn)。標(biāo)識(identity):每個對象的實(shí)例都需要一個可以唯一標(biāo)識這個實(shí)例的標(biāo)記。實(shí)例屬性(instanceattribute):一個對象就是一組屬性的集合。實(shí)例方法(instancemethod):所有存取或者更新對象某個實(shí)例一條或者多條屬性的函數(shù)的集合。類屬性(classattribute):屬于一個類中所有對象的屬性,不會只在某個實(shí)例上發(fā)生變化類方法(classmethod):那些無須特定的對性實(shí)例就能夠工作的從屬于類的函數(shù)。類與實(shí)例創(chuàng)建類和子類增加屬于類的實(shí)例
classanimals: passclassmammals(animals): passclassdog(mammals): passBob=dog()類與實(shí)例用函數(shù)表示類的特征classanimals:defbreath(self): print(‘breathing’)classmammals(animals):defmove(self): print(‘moving’)classdog(mammals):defeat(self): print(‘eatingfood’)Bob=dog()Bob.move()Bob.eat()運(yùn)行結(jié)果是movingeatingfood面向?qū)ο蟮奶卣鞣庋b繼承多態(tài)封裝封裝,即將抽象得到的數(shù)據(jù)和行為相結(jié)合,將基本類結(jié)構(gòu)的細(xì)節(jié)隱藏起來,通過方法接口實(shí)現(xiàn)對實(shí)例變量的所有訪問。Python中允許對類中的數(shù)據(jù)和方法進(jìn)行封裝。下面的例子封裝了類中的數(shù)據(jù),將公司名和Leader分別封裝到對象obj1、obj2中self的companyname和leader屬性中。classCompany:def__init__(self,companyname,leader):panyname=companynameself.leader=leaderif__name__=="__main__":obj1=Company("A","Kevin")obj2=Company("B","Jone")封裝在調(diào)用數(shù)據(jù)時,可以使用兩種方式:通過對象直接調(diào)用;通過self間接調(diào)用。如下面的例子:classCompany:def__init__(self,dept,leader):self.dept=deptself.leader=leader
defshow(self):printself.deptprintself.leader
if__name__=="__main__":obj1=Company("A","Kevin")obj2=Company("B","Jone")
#通過對象直接調(diào)用封裝的數(shù)據(jù)printobj1.deptprintobj1.leader
#通過self來間接調(diào)用,self即為對象本身obj1.show()obj2.show()繼承已經(jīng)有一個類,另外還想再創(chuàng)建一個和已有類非常相似的類時,我們就用到繼承在類上添加關(guān)聯(lián),使得位于下層的類可以“繼承”位于關(guān)系上層的類的屬性繼承利于代碼的復(fù)用性和規(guī)?;疨ython中的類還具有多繼承的特性,即一個類可以有多個父類繼承classScale:defcheck(self):ifself.count_person>500:print("%sisbigcompany."%)else:print("%sissmallcompany."%)
classCompany(Scale):def__init__(self,name,count):=nameself.count_person=count
if__name__=="__main__":my_company=Company("ABC",800)my_company.check()本例中,Company類只有Scale一個父類,當(dāng)調(diào)用check()方法時,Company本身沒有定義check方法,代碼會向上自動檢測父類Scale中是否存在check方法,結(jié)果在父類中找到該方法,此為單繼承,即只有一個父類繼承classScale:defcheck(self):ifself.count_person>500:return"%sisbigcompany."%else:return"%sissmallcompany."%
classDetail:defshow(self,scale):print("%s,Thiscompanyhas%spersons."%(scale,self.count_person))
classCompany(Scale,Detail):def__init__(self,name,count):=nameself.count_person=count
if__name__=="__main__":my_company=Company("ABC",800)company_scale=my_company.check()my_company.show(company_scale)本例中,類Company分別繼承了類Scale和類Detail,可以調(diào)用父類中的check和show方法。這種繼承的方法叫做多繼承。多態(tài)多態(tài),即多種狀態(tài)。在事先不知道對象類型的情況下,可以自動根據(jù)對象的不同類型,執(zhí)行相
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市梓潼縣2026屆九年級上學(xué)期1月期末考試物理試卷答案
- 衛(wèi)生檢查題目及答案
- 網(wǎng)格員考試題及答案
- 六年級樂趣作文300字4篇
- 二十屆四中全會考試測試卷及答案
- 電纜敷設(shè)施工技術(shù)要領(lǐng)
- 2026屆山東省淄博市高三上學(xué)期期末考試(摸底質(zhì)量檢測)歷史試題(含答案)
- 社群運(yùn)營管理實(shí)操考試題及答案
- 社會實(shí)踐考試試題及答案
- 青霉素過敏考試題及答案
- 中藥外洗治療化療導(dǎo)致外周神經(jīng)毒課件
- 2025-2026學(xué)年人教版(新教材)小學(xué)數(shù)學(xué)三年級下冊(全冊)教學(xué)設(shè)計(jì)(附目錄P208)
- 2025版中國慢性乙型肝炎防治指南
- 2026年及未來5年市場數(shù)據(jù)中國草酸行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略數(shù)據(jù)分析研究報告
- 感染科結(jié)核病防治培訓(xùn)指南
- 金屬水幕施工方案(3篇)
- 2025美國心臟協(xié)會心肺復(fù)蘇(CPR)與心血管急救(ECC)指南解讀
- 2024-2025學(xué)年浙江省金華市蘭溪市一年級(上)期末數(shù)學(xué)試卷
- 廣東省珠海市香洲區(qū)2023-2024學(xué)年八年級上學(xué)期語文期末試卷(含答案)
- 2025年青海省輔警考試公安基礎(chǔ)知識考試真題庫及參考答案
- GB/T 5169.12-2024電工電子產(chǎn)品著火危險試驗(yàn)第12部分:灼熱絲/熱絲基本試驗(yàn)方法材料的灼熱絲可燃性指數(shù)(GWFI)試驗(yàn)方法
評論
0/150
提交評論