版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ū)ο蟮母拍铑?lèi)與實(shí)例面向?qū)ο蟮奶卣髂KPython模塊模塊化架構(gòu)包的管理庫(kù)的引用python的標(biāo)準(zhǔn)庫(kù)模塊類(lèi)型名稱(chēng)描述文本String通用字符串操作Re正則表達(dá)式操作二進(jìn)制數(shù)據(jù)Struct將字節(jié)解析為打包的二進(jìn)制數(shù)據(jù)Codecs注冊(cè)表與基類(lèi)的編解碼器數(shù)據(jù)類(lèi)型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)。其中包是由一系列模塊組成的集合,模塊是處理某一類(lèi)問(wèn)題的函數(shù)和類(lèi)的集合模塊1函數(shù)類(lèi)模塊2函數(shù)類(lèi)模塊n函數(shù)類(lèi)……包圖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),引入了包依賴(lài)管理。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類(lèi)型的可安裝文件,如pyparsing庫(kù)。在PyPI官網(wǎng)上搜索pyparsing,下載列表見(jiàn)下圖,我們只需選擇相應(yīng)的版本下載安裝包后,雙擊,按照安裝提示步驟安裝即可。圖9-4pyparsing庫(kù)可下載的安裝文件列表庫(kù)的引用Python中的庫(kù)主要分為三大類(lèi),一類(lèi)是標(biāo)準(zhǔn)模塊,第二類(lèi)是第三方模塊,第三類(lèi)是自定義模塊。無(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)槿郑蝗绻鹖mport語(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ù)前面加模塊的名稱(chēng),不會(huì)報(bào)錯(cuò)。2、也可以把一個(gè)模塊中的所有名稱(chēng)(包括函數(shù)的、方法的、屬性的等等)都導(dǎo)入到當(dāng)前命名空間中:
frommodnameimport*
但是在實(shí)際編碼中,很可能導(dǎo)入進(jìn)來(lái)的名稱(chēng)會(huì)覆蓋掉當(dāng)前命名空間中已有的名稱(chēng),因此不推薦面向?qū)ο竺嫦驅(qū)ο蟮母拍铑?lèi)與實(shí)例面向?qū)ο蟮奶卣髅嫦驅(qū)ο蟮母拍铑?lèi)(class):對(duì)具有相同數(shù)據(jù)和方法的一組對(duì)象的描述或定義。對(duì)象(object):對(duì)象是一個(gè)類(lèi)的實(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ù)的集合。類(lèi)屬性(classattribute):屬于一個(gè)類(lèi)中所有對(duì)象的屬性,不會(huì)只在某個(gè)實(shí)例上發(fā)生變化類(lèi)方法(classmethod):那些無(wú)須特定的對(duì)性實(shí)例就能夠工作的從屬于類(lèi)的函數(shù)。類(lèi)與實(shí)例創(chuàng)建類(lèi)和子類(lèi)增加屬于類(lèi)的實(shí)例
classanimals: passclassmammals(animals): passclassdog(mammals): passBob=dog()類(lèi)與實(shí)例用函數(shù)表示類(lèi)的特征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é)合,將基本類(lèi)結(jié)構(gòu)的細(xì)節(jié)隱藏起來(lái),通過(guò)方法接口實(shí)現(xiàn)對(duì)實(shí)例變量的所有訪問(wèn)。Python中允許對(duì)類(lèi)中的數(shù)據(jù)和方法進(jìn)行封裝。下面的例子封裝了類(lèi)中的數(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è)類(lèi),另外還想再創(chuàng)建一個(gè)和已有類(lèi)非常相似的類(lèi)時(shí),我們就用到繼承在類(lèi)上添加關(guān)聯(lián),使得位于下層的類(lèi)可以“繼承”位于關(guān)系上層的類(lèi)的屬性繼承利于代碼的復(fù)用性和規(guī)?;疨ython中的類(lèi)還具有多繼承的特性,即一個(gè)類(lèi)可以有多個(gè)父類(lèi)繼承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類(lèi)只有Scale一個(gè)父類(lèi),當(dāng)調(diào)用check()方法時(shí),Company本身沒(méi)有定義check方法,代碼會(huì)向上自動(dòng)檢測(cè)父類(lèi)Scale中是否存在check方法,結(jié)果在父類(lèi)中找到該方法,此為單繼承,即只有一個(gè)父類(lèi)繼承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)本例中,類(lèi)Company分別繼承了類(lèi)Scale和類(lèi)Detail,可以調(diào)用父類(lèi)中的check和show方法。這種繼承的方法叫做多繼承。多態(tài)多態(tài),即多種狀態(tài)。在事先不知道對(duì)象類(lèi)型的情況下,可以自動(dòng)根據(jù)對(duì)象的不同類(lèi)型,執(zhí)行相
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024預(yù)制場(chǎng)租賃及設(shè)備維修保障合同3篇
- 2024消費(fèi)電子產(chǎn)品分期付款合同樣本3篇
- 2025年度消防設(shè)施安裝、調(diào)試及驗(yàn)收服務(wù)合同2篇
- 二零二五年度生物醫(yī)療大數(shù)據(jù)股權(quán)認(rèn)購(gòu)與應(yīng)用合同3篇
- 2024擔(dān)保合同的種類(lèi)與要件
- 2024幼兒園幼兒教育課程設(shè)計(jì)與研發(fā)合同3篇
- 環(huán)保材料研發(fā)及生產(chǎn)供應(yīng)合同
- 2024美容院美容院加盟店員工聘用合同3篇
- 2024年船舶租賃合同:包括租賃船舶的租賃保證金、租金退還等事項(xiàng)
- 電子競(jìng)技產(chǎn)業(yè)發(fā)展基金投資合同
- 2023年希望杯數(shù)學(xué)培訓(xùn)100題-六年級(jí)(含答案)
- 一年級(jí)科學(xué)人教版總結(jié)回顧2
- 個(gè)人住房貸款提前還款月供及節(jié)省利息EXCEL計(jì)算
- 第五單元《圓》教材解析-人教版數(shù)學(xué)六年級(jí)上冊(cè)
- 患者突發(fā)昏迷應(yīng)急預(yù)案演練腳本-
- 智能機(jī)器人技術(shù)導(dǎo)論P(yáng)PT完整全套教學(xué)課件
- 危險(xiǎn)性較大的分部分項(xiàng)工程清單 及安全管理措施
- 中職英語(yǔ)語(yǔ)文版(2023)基礎(chǔ)模塊1 Unit 1 The Joys of Vocational School 單元測(cè)試題(含答案)
- 最全-房屋市政工程安全生產(chǎn)標(biāo)準(zhǔn)化指導(dǎo)圖冊(cè)
- 聚合物的流變性詳解演示文稿
- 壓力彈簧力度計(jì)算器及計(jì)算公式
評(píng)論
0/150
提交評(píng)論