




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming9模塊和面向?qū)ο竽KPython模塊模塊化架構(gòu)包的管理庫(kù)的引用面向?qū)ο竺嫦驅(qū)ο蟮母拍铑惻c實(shí)例面向?qū)ο蟮奶卣髂KPython模塊模塊化架構(gòu)包的管理庫(kù)的引用python的標(biāo)準(zhǔn)庫(kù)模塊類型名稱描述文本String通用字符串操作Re正則表達(dá)式操作二進(jìn)制數(shù)據(jù)Struct將字節(jié)解析為打包的二進(jìn)制數(shù)據(jù)Codecs注冊(cè)表與基類的編解碼器數(shù)據(jù)類型Datatime基于日期和時(shí)間工具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庫(kù)模塊圖9-1Python程序架構(gòu)包的組成Python程序一般由三部分組成:包(package)、模塊(module)和函數(shù)(function)。其中包是由一系列模塊組成的集合,模塊是處理某一類問(wèn)題的函數(shù)和類的集合模塊1函數(shù)類模塊2函數(shù)類模塊n函數(shù)類……包圖9-2包、模塊和和函數(shù)之間的關(guān)系python包管理圖9-3Python包管理python包管理4種包管理工具:distutilsdistutils是Python標(biāo)準(zhǔn)庫(kù)的一部分,最初為開(kāi)發(fā)者提供一種方便的打開(kāi)方式,同時(shí)也為使用者提供了方便的包安裝方式。setuptoolssetuptools是對(duì)distutils的增強(qiáng),引入了包依賴管理。setuptools可以為Python包創(chuàng)建egg文件,Python與egg文件的關(guān)系,相當(dāng)于java與jar包的關(guān)系。setuptools提供的easy_install腳本可以用來(lái)安裝egg包。python包管理4種包管理工具:easy_installeasy_install是由PEAK(PythonEnterpriseApplicationKit)開(kāi)發(fā)的setuptools包里帶的一個(gè)命令,所以使用easy_install實(shí)際上是在調(diào)用setuptools來(lái)完成安裝模塊的工作。easy_install可以自動(dòng)從PyPI[/pypi](第三方庫(kù))上下載相關(guān)的包,并完成安裝,升級(jí)。pippip是安裝管理Python包的標(biāo)準(zhǔn)工具,2008年發(fā)布,它是對(duì)easy_install的一種增強(qiáng),也是其替代品,但它仍有大量的功能建立在setuptools組件之上。同樣可以從PyPI上自動(dòng)下載安裝包。在pip中,安裝所需要的包都要先下載,所以不會(huì)出現(xiàn)安裝了一部分,另一部分沒(méi)有安裝的情況,且所有的安裝包都會(huì)被跟蹤。python包管理2種包格式:EggsEggs格式是setuptools引入的一種文件格式,它使用.egg作為擴(kuò)展名,用于Python第三方庫(kù)的安裝。setuptools可以識(shí)別這種格式,并解析和安裝它。pip支持eggs,但希望不再使用它。WheelWheel本質(zhì)上是一個(gè)zip包格式,它使用.whl擴(kuò)展名,用于Python第三方庫(kù)的安裝,它的出現(xiàn)是為了替代Eggs。Wheel和eggs格式的具體區(qū)別,請(qǐng)參見(jiàn)官方文檔/。python庫(kù)的安裝pip一般高版本的Python的在安裝過(guò)程中會(huì)自動(dòng)設(shè)置環(huán)境變量,且自帶pip的安裝若無(wú),進(jìn)行手動(dòng)設(shè)置環(huán)境變量的操作右鍵【計(jì)算機(jī)】,選擇【屬性】在左側(cè)欄找到【高級(jí)系統(tǒng)設(shè)置】打開(kāi)命令行,輸入python,出現(xiàn)以下提示即為配置成功。點(diǎn)擊【環(huán)境變量】在系統(tǒng)變量中找到Path,雙擊。在字符串的末尾加一個(gè)“;”,再輸入Python的安裝路徑,一路點(diǎn)擊【確定】,直到設(shè)置完成。打開(kāi)命令行,輸入python,檢驗(yàn)是否配置成功。python庫(kù)的安裝wheelwheel的安裝Python第三方庫(kù)官網(wǎng)[/pypi]中下載將下載好的文件移入Python安裝目錄中scripts文件夾中打開(kāi)命令行,進(jìn)入scripts文件夾,輸入命令pipinstallpandas-0.18.1-cp35-cp35m-win_amd64.whl,【Enter】鍵入python庫(kù)的安裝exe文件exe的安裝有些Python的第三方庫(kù)可以直接下載到.exe類型的可安裝文件,如pyparsing庫(kù)。在PyPI官網(wǎng)上搜索pyparsing,下載列表見(jiàn)下圖,我們只需選擇相應(yīng)的版本下載安裝包后,雙擊,按照安裝提示步驟安裝即可。圖9-4pyparsing庫(kù)可下載的安裝文件列表庫(kù)的引用Python中的庫(kù)主要分為三大類,一類是標(biāo)準(zhǔn)模塊,第二類是第三方模塊,第三類是自定義模塊。無(wú)論是第三方庫(kù)還是標(biāo)準(zhǔn)庫(kù)以及我們自定義的庫(kù),在使用之前都需要進(jìn)行導(dǎo)入。導(dǎo)入方法import方式from方式import方式importmodname1importmodname2……importmodnameN也可以在一行內(nèi)導(dǎo)入多個(gè)模塊:importmodname1[,modname2[,…modnameN]](這樣書(shū)寫(xiě)的代碼可讀性較差,不推薦)注1、如果import語(yǔ)句是在代碼的頂層,則它的作用域?yàn)槿?;如果import語(yǔ)句在某個(gè)函數(shù)中,則它的作用域僅局限于該函數(shù)。2、如果import語(yǔ)句是在代碼的頂層,則它的作用域?yàn)槿?;如果import語(yǔ)句在某個(gè)函數(shù)中,則它的作用域僅局限于該函數(shù)。from方式fromturtleimportPent=Pen()
注
1、代碼的第一行導(dǎo)入了turtle模塊中的Pen函數(shù),第二行調(diào)用Pen()函數(shù)時(shí),不需要再在函數(shù)前面加模塊的名稱,不會(huì)報(bào)錯(cuò)。2、也可以把一個(gè)模塊中的所有名稱(包括函數(shù)的、方法的、屬性的等等)都導(dǎo)入到當(dāng)前命名空間中:
frommodnameimport*
但是在實(shí)際編碼中,很可能導(dǎo)入進(jìn)來(lái)的名稱會(huì)覆蓋掉當(dāng)前命名空間中已有的名稱,因此不推薦面向?qū)ο竺嫦驅(qū)ο蟮母拍铑惻c實(shí)例面向?qū)ο蟮奶卣髅嫦驅(qū)ο蟮母拍铑?class):對(duì)具有相同數(shù)據(jù)和方法的一組對(duì)象的描述或定義。對(duì)象(object):對(duì)象是一個(gè)類的實(shí)例。實(shí)例(instance):一個(gè)對(duì)象的實(shí)例化實(shí)現(xiàn)。標(biāo)識(shí)(identity):每個(gè)對(duì)象的實(shí)例都需要一個(gè)可以唯一標(biāo)識(shí)這個(gè)實(shí)例的標(biāo)記。實(shí)例屬性(instanceattribute):一個(gè)對(duì)象就是一組屬性的集合。實(shí)例方法(instancemethod):所有存取或者更新對(duì)象某個(gè)實(shí)例一條或者多條屬性的函數(shù)的集合。類屬性(classattribute):屬于一個(gè)類中所有對(duì)象的屬性,不會(huì)只在某個(gè)實(shí)例上發(fā)生變化類方法(classmethod):那些無(wú)須特定的對(duì)性實(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é)隱藏起來(lái),通過(guò)方法接口實(shí)現(xiàn)對(duì)實(shí)例變量的所有訪問(wèn)。Python中允許對(duì)類中的數(shù)據(jù)和方法進(jìn)行封裝。下面的例子封裝了類中的數(shù)據(jù),將公司名和Leader分別封裝到對(duì)象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ù)時(shí),可以使用兩種方式:通過(guò)對(duì)象直接調(diào)用;通過(guò)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")
#通過(guò)對(duì)象直接調(diào)用封裝的數(shù)據(jù)printobj1.deptprintobj1.leader
#通過(guò)self來(lái)間接調(diào)用,self即為對(duì)象本身obj1.show()obj2.show()繼承已經(jīng)有一個(gè)類,另外還想再創(chuàng)建一個(gè)和已有類非常相似的類時(shí),我們就用到繼承在類上添加關(guān)聯(lián),使得位于下層的類可以“繼承”位于關(guān)系上層的類的屬性繼承利于代碼的復(fù)用性和規(guī)?;疨ython中的類還具有多繼承的特性,即一個(gè)類可以有多個(gè)父類繼承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一個(gè)父類,當(dāng)調(diào)用check()方法時(shí),Company本身沒(méi)有定義check方法,代碼會(huì)向上自動(dòng)檢測(cè)父類Scale中是否存在check方法,結(jié)果在父類中找到該方法,此為單繼承,即只有一個(gè)父類繼承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)。在事先不知道對(duì)象類型的情況下,可以自動(dòng)根據(jù)對(duì)象的不同類型,執(zhí)行相
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南2025年海南省國(guó)興中學(xué)招聘6人筆試歷年參考題庫(kù)附帶答案詳解
- 三年級(jí)英語(yǔ)下冊(cè)- 教案 -學(xué)習(xí)任務(wù)單 -U6-Lesson 2 They give us fruits (它們給我們水果)
- 三年級(jí)英語(yǔ)下冊(cè)-教案 學(xué)習(xí)任務(wù)單 U5-Lesson 3 Its Not Very Cold Here in Winter(這里的冬天不太冷)
- 大學(xué)生創(chuàng)業(yè)微實(shí)踐
- 2025年消防安全設(shè)施維護(hù)員實(shí)操考試題庫(kù)試題匯編
- 2025年一建考試合同管理與索賠難點(diǎn)突破題庫(kù)試卷
- 2025年護(hù)士執(zhí)業(yè)資格考試題庫(kù)(護(hù)理倫理學(xué)專項(xiàng))護(hù)理倫理學(xué)道德案例分析實(shí)踐模擬試題
- 2025年茶藝師職業(yè)技能鑒定模擬試題:茶藝師茶藝知識(shí)與茶藝館經(jīng)營(yíng)管理試題集錦
- 2025年小學(xué)英語(yǔ)畢業(yè)考試模擬卷:英語(yǔ)短劇表演腳本設(shè)計(jì)與實(shí)踐試題
- 2025年人力資源管理師專業(yè)技能考核試卷:人力資源薪酬體系設(shè)計(jì)實(shí)務(wù)試題
- 記錄食品安全事故處置等保證食品安全的規(guī)章制度
- 2024年陜西省高中學(xué)業(yè)水平合格性考試化學(xué)模擬試卷(含答案解析)
- “江格爾”的數(shù)字化保護(hù)與再生研究的開(kāi)題報(bào)告
- 2024年公安信息化項(xiàng)目可行性研究報(bào)告書(shū)
- (2024年)尊老愛(ài)幼ppt全新
- 《制作酸奶的方法》課件
- 設(shè)計(jì)方案新能源汽車充電樁設(shè)計(jì)
- (高清版)DZT 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范
- 武漢中考理化生實(shí)驗(yàn)備考試題庫(kù)(含答案)
- 酒店客房方案
- 學(xué)校食堂食品安全日管控、周排查、月調(diào)度制度(含記錄)
評(píng)論
0/150
提交評(píng)論