Python程序設(shè)計 課件 第8章 使用模塊和庫編程_第1頁
Python程序設(shè)計 課件 第8章 使用模塊和庫編程_第2頁
Python程序設(shè)計 課件 第8章 使用模塊和庫編程_第3頁
Python程序設(shè)計 課件 第8章 使用模塊和庫編程_第4頁
Python程序設(shè)計 課件 第8章 使用模塊和庫編程_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章使用模塊和庫編程模塊的使用與創(chuàng)建包的創(chuàng)建與使用常見標(biāo)準(zhǔn)庫的使用常見的第三方庫模塊的使用與創(chuàng)建包的創(chuàng)建與使用常見標(biāo)準(zhǔn)庫的使用常見的第三方庫理解模塊和庫的概念掌握模塊的導(dǎo)人和使用熟練使用常用標(biāo)準(zhǔn)庫掌握使用pip工具安裝和管理庫的方法熟悉并掌握一些常用的第三方庫學(xué)會創(chuàng)建自己的模塊培養(yǎng)良好的編程習(xí)慣模塊的使用與創(chuàng)建模塊概述模塊的導(dǎo)入模塊自定義與使用8.18.1.1模塊概述Python提供了強大的模塊支持,主要表現(xiàn)為不僅在Python標(biāo)準(zhǔn)庫中包含了大量的模塊(稱為標(biāo)準(zhǔn)模塊),而且還有很多第三方模塊,另外開發(fā)者自己也可以開發(fā)自定義模塊。通過這些強大的模塊支持將極大地提高程序人員的開發(fā)效率。8.1.1模塊概述1.模塊的概念模塊是一組Python源程序代碼,包含多個函數(shù)或類。如果程序中包含多個可以復(fù)用的函數(shù)或類,則通常把相關(guān)的函數(shù)和類分組包含在單獨的模塊(module)中。這些提供計算功能的代碼單元稱為模塊(或函數(shù)模塊),導(dǎo)入并使用這些模塊的程序,則稱為客戶程序。每個.py文件都可以視為一個模塊。.py8.1.1模塊概述2.模塊化程序設(shè)計的優(yōu)越性大規(guī)模的軟件系統(tǒng):通過把復(fù)雜的任務(wù)分解為子任務(wù),可以實現(xiàn)團隊合作開發(fā),完成大規(guī)模的軟件系統(tǒng)。控制程序的復(fù)雜度:分解后的子任務(wù)的實現(xiàn)模塊代碼規(guī)模一般控制在數(shù)百行之內(nèi),從而可以控制程序的復(fù)雜度,各代碼調(diào)試可以限制在較少代碼范圍內(nèi)。實現(xiàn)代碼重用:一旦實現(xiàn)了通用模塊如math、random等,任何客戶程序都可通過導(dǎo)入模塊,直接重用代碼,而無須重復(fù)實現(xiàn)。增強可維護性:模塊化程序設(shè)計可以增強程序的可讀性。通過改進一個模塊的實現(xiàn),可以使得使用該模塊的客戶程序同時被改進。8.1.1模塊概述3.Python中使用的模塊內(nèi)置模塊內(nèi)置模塊時Python自帶的模塊,也稱為“標(biāo)準(zhǔn)庫”,如數(shù)學(xué)計算的math、日期和時間處理的datetime、系統(tǒng)相關(guān)功能的sys等。第三方模塊第三方模塊是指不是Python自帶的模塊,也稱為“擴展庫”,這類模塊需要另外安裝。自定義模塊自己先編寫好一個實現(xiàn)了特定功能的模塊后,在以后需要該功能的客戶程序中,都可以導(dǎo)入這個模塊,這也稱為自定義模塊。要實現(xiàn)自定義模塊主要分為兩部分:一部分是創(chuàng)建模塊;另一部分是導(dǎo)入模塊。Python中使用的模塊有以下3種:8.1.2模塊的導(dǎo)入1.import語句導(dǎo)入模塊客戶程序遵循API提供的調(diào)用接口,導(dǎo)入后可調(diào)用模塊中實現(xiàn)的函數(shù)功能,通過import語句導(dǎo)入當(dāng)前程序。直接通過import導(dǎo)入的模塊可以在當(dāng)前程序中使用該模塊的所有內(nèi)容,但是在使用模塊中的某個具體的函數(shù)/類/屬性時,需要加上模塊的名字。使用方式為“模塊名.函數(shù)名/類名/屬性名”。importmathprint(math.fabs(-1))使用import語句導(dǎo)入模塊時,模塊名區(qū)分大小寫字母??梢栽谝恍袃?nèi)導(dǎo)入多個模塊,如:importtime,os,sys8.1.2模塊的導(dǎo)入2.from…import…語句導(dǎo)入模塊如果在程序中只需要使用模塊中的某個函數(shù)/類/屬性,則可以用關(guān)鍵字from導(dǎo)入,這種導(dǎo)入方式可以在程序中直接使用函數(shù)名/類名/屬性名。from…import語句的語法格式如下:frommodulenameimportmembermodulename:模塊名稱,區(qū)分字母大小寫,需要和定義模塊時設(shè)置的模塊名稱的大小寫保持一致。member:用于指定要導(dǎo)入該模塊中的成員,它包括模塊中的函數(shù)/類/屬性等。from…import…語句導(dǎo)入模塊應(yīng)用示例。frommathimportfabsprint(fabs(-1))例【8-1】8.1.2模塊的導(dǎo)入3.from…import…as…語句導(dǎo)入模塊在導(dǎo)入模塊或者某個具體函數(shù)時,如果出現(xiàn)同名的情況或者為了簡化名稱,則可以使用關(guān)鍵字as為模塊或者函數(shù)定義一個別名。例:

import

numpyasnp8.1.3模塊自定義與使用把能夠?qū)崿F(xiàn)某一特定功能的代碼放置在一個文件中作為一個模塊。使用模塊可以將計算任務(wù)分解為大小合理的子任務(wù),并實現(xiàn)代碼的重用。使用模塊也可以避免函數(shù)名或變量名的沖突。模塊的自定義就是將若干函數(shù)或類的代碼保存在一個擴展名為“.py”的文件中。8.1.3模塊自定義與使用例【8-2】創(chuàng)建兩個模塊:一個是矩形模塊,其中包括計算矩形周長和面積的函數(shù);另一個是圓形模塊,其中包括計算圓形周長和面積的函數(shù)。然后在另一個Python文件中導(dǎo)入這兩個模塊,并調(diào)用相應(yīng)的函數(shù)計算周長和面積。(1)創(chuàng)建矩形模塊,對應(yīng)的文件名為rectangle.py,在該文件中定義兩個函數(shù):一個用于計算矩形的周長;另一個用于計算矩形的面積,具體代碼如下。defgirth(width,height):#功能:計算周長參數(shù):width(寬度)、height(高)return(width+height)*2defarea(width,height):#功能:計算面積參數(shù):width(寬度)、height(高)returnwidth*heightif__name__=='__main__':#頂級模塊,可以在當(dāng)前文件下執(zhí)行

print(area(10,20))8.1.3模塊自定義與使用例【8-2】(2)創(chuàng)建圓形模塊,對應(yīng)的文件名為circle.py,在該文件中定義兩個函數(shù):一個用于計算圓形的周長;另一個用于計算圓形的面積,具體代碼如下。frommathimportpiasPIdefgirth(r):#功能:計算周長參數(shù):r(半徑)returnround(2*PI*r,2)#計算周長并保留兩位小數(shù)defarea(r): #功能:計算面積參數(shù):r(半徑)returnround(PI*r*r,2)#計算面積并保留兩位小數(shù)if__name__=='__main__':print(girth(10))8.1.3模塊自定義與使用例【8-2】(3)創(chuàng)建一個名稱為compute.py的Python文件,在該文件中,導(dǎo)入矩形和圓形模塊,最后分別調(diào)用計算圓形周長的函數(shù)和計算矩形周長的函數(shù),代碼如下:importrectangleasr#導(dǎo)入矩形模塊importcircleasc#導(dǎo)入圓形模塊if__name__=='__main__':print("圓形的周長為:",c.girth(5))#調(diào)用計算圓形周長的方法

print("矩形的周長為:",r.girth(15,25))#調(diào)用計算矩形周長的方法執(zhí)行compute.py文件,運行結(jié)果:圓形的周長為:31.42矩形的周長為:80包的創(chuàng)建與使用

創(chuàng)建包使用包8.28.2.1創(chuàng)建包為了解決模塊名重復(fù)的問題,Python中提出了包(Package)的概念。所謂包是一個有層次的文件目錄結(jié)構(gòu),通常將一組功能相近的模塊組織在一個目錄下,它定義了一個由模塊和子包組成的Python應(yīng)用程序執(zhí)行環(huán)境。包可以解決如下問題:把命名空間組織成有層次的結(jié)構(gòu);允許程序員把有聯(lián)系的模塊組織到一起;允許程序員使用有目錄結(jié)構(gòu)而不是一大堆雜亂無章的文件;解決有沖突的模塊名稱。包簡單理解就是“文件夾”,一個包對應(yīng)著一個存放了特定代碼的文件夾,該文件夾中必須有一個__init__.py文件。8.2.1創(chuàng)建包創(chuàng)建包實際上就是創(chuàng)建一個文件夾,并且在該文件夾根目錄中創(chuàng)建一個名稱為“__init__.py”的Python文件。在__init__.py文件中所編寫的代碼,在導(dǎo)入包時會自動執(zhí)行。在__init__.py文件中,可以不編寫任何代碼,也可以編寫一些在該包被導(dǎo)入時需要先執(zhí)行的代碼。例如,在C盤的根目錄下創(chuàng)建一個名稱為config的包,具體步驟如下:

1.在計算機的C盤根目錄下,創(chuàng)建一個名稱為config的文件夾。

2.在config文件夾下,創(chuàng)建一個名稱為“__init__.py”的文件。8.2.2使用包對于包的使用通常有3種方式:1通過“import完整包名.模塊名”的形式加載指定模塊。比如在config包中,有個size的模塊,導(dǎo)入時,可以使用代碼:importconfig.size若在size模塊中定義了3個變量,比如:length=30width=20height=10創(chuàng)建“main.py”文件,在導(dǎo)入size模塊后,在調(diào)用length、width和height變量時,需要在變量名前加入“config.size”前綴。輸入代碼如下:importconfig.sizeif__name__=='__main__':print("長度:",config.size.length)print("寬度:",config.size.width)print("高度:",config.size.height)運行結(jié)果:長度:30寬度:20高度:108.2.2使用包與第1種方式的區(qū)別在于,在使用時不需要帶包的前綴,但需要帶模塊名稱。代碼應(yīng)為:fromconfigimportsizeif__name__=='__main__':print("長度:",size.length)print("寬度:",size.width)print("高度:",size.height)運行結(jié)果:長度:30寬度:20高度:10通過“from完整包名import模塊名”的形式加載指定模塊。28.2.2使用包與前兩種方式的區(qū)別在于,通過該方式導(dǎo)入模塊的函數(shù)、變量或類后,在使用時直接使用函數(shù)、變量或類名即可。代碼應(yīng)為:fromconfig.sizeimportlength,width,heightif__name__=='__main__':print("長度:",length)print("寬度:",width)print("高度:",height)運行結(jié)果:長度:30寬度:20高度:10通過“from完整包名.模塊名import定義名”的形式加載指定模塊。3常見標(biāo)準(zhǔn)庫的使用

turtle庫的使用random庫的使用時間和日期庫的使用8.38.3.1turtle庫的使用海龜繪圖是Python內(nèi)置的一個比較有趣的模塊,模塊名為turtle。turtle庫繪圖的基本框架:一個小海龜在坐標(biāo)系中爬行,其爬行軌跡形成了繪制圖形。對于小海龜來說,有前進、后退、旋轉(zhuǎn)、提起畫筆、放下畫筆等動作。繪圖初始時,小海龜位于畫布正中央,此處坐標(biāo)為坐標(biāo)原點(0,0),前進方向為水平右方。橫向為x軸,縱向為y軸,x,y坐標(biāo)值的單位為像素。海龜繪圖是Python內(nèi)置的模塊,無需安裝,只需導(dǎo)入即可。Turtle庫包含100多個功能函數(shù),主要包括窗體設(shè)置函數(shù)、畫筆狀態(tài)函數(shù)、畫筆運動函數(shù)等3類。8.3.1turtle庫的使用1.窗體設(shè)置在海龜繪圖中,提供了setup()方法設(shè)置海龜繪圖窗口的尺寸、顏色和初始位置。setup()方法的語法如下:turtle.setup(width="width",height="height",startx="leftright",starty="topbottom")width:設(shè)置窗口的寬度,可以是表示大小為多少像素的整型數(shù)值,也可以是表示屏幕占比的浮點數(shù)值;默認(rèn)為屏幕的50%。height:設(shè)置窗口的高度,可以是表示大小為多少像素的整型數(shù)值,也可以是表示屏幕占比的浮點數(shù)值:默認(rèn)為屏幕的50%。startx:設(shè)置窗口的X軸位置,設(shè)置為正值,表示初始位置距離屏幕左邊緣多少像素,負(fù)值表示距離右邊緣,None表示窗口水平居中。starty:設(shè)置窗口的y軸位置,設(shè)置為正值,表示初始位置距離屏幕上邊緣多少像素,負(fù)值表示距離下邊緣,None表示窗口垂直居中。8.3.1turtle庫的使用1.窗體設(shè)置例如,設(shè)置窗口寬度為400,高度為300,距離屏幕的左邊緣50像素,上邊緣30像素,代碼如下:turtle.setup(width=400,height=300,startx=59,starty=30)再例如,設(shè)置寬度和高度都為屏幕的50%,并且位于屏幕中心,代碼如下:turtle.setup(width=.5,height=.5,startx=None,starty=None)8.3.1turtle庫的使用2.設(shè)置畫筆狀態(tài)函數(shù)名功能描述pendown()放下畫筆,繪圖初始時,畫筆處于放下狀態(tài)。penup()提起畫筆,與pendown(),配對使用。pensize(width)筆線條的粗細(xì)為指定大小pencolor()設(shè)置畫筆的顏色begin_fill()填充圖形前,調(diào)用該方法。end_fill()填充圖形結(jié)束filling()返回填充的狀態(tài),True為填充,F(xiàn)alse為未填。clear()清空當(dāng)前窗口,但不改變當(dāng)前畫筆的位置。reset()清空當(dāng)前窗口,并重置位置等狀態(tài)為默認(rèn)值。screensize()設(shè)置畫布的長和寬hideturtle()藏畫筆的turtle形狀showturtle()顯示畫筆的turtle形狀isvisible()如果turtle可見,則返回True,否則返回False。write(str,font=None)輸出font字體的字符串shape()畫筆初始形狀,常用的形狀名有arrow(向右的等腰三角形)、turtle(海龜)、circle(實心圓)、square(實心正方形)、triangle(向右的正三角形)或classic(箭頭)等6種。在初始的繪圖窗口中,坐標(biāo)原點(0,0)的位置默認(rèn)有一個指向X軸正方向的箭頭(或小烏龜),這就相當(dāng)于我們的畫筆??梢钥刂飘嫻P的線條粗細(xì)、顏色、運動速度以及是否顯示光標(biāo)等,設(shè)置畫筆狀態(tài)的函數(shù)如右表所示。8.3.1turtle庫的使用3.畫筆運動函數(shù)函數(shù)名功能描述forward()沿前方向前進指定距離backward()沿著當(dāng)前相反方向后退指定距離right(angle)向右旋轉(zhuǎn)angle角度left(angle)向左旋轉(zhuǎn)angle角度goto(x,y)移動到絕對坐標(biāo)(x,y)處setx()將當(dāng)前x軸移動到指定位置sety()將當(dāng)前y軸移動到指定位置setheading(angle)設(shè)置當(dāng)前朝向為angle角度home()設(shè)置當(dāng)前畫筆位置為原點,朝向東circle(radius,e)繪制一個指定半徑r和角度e的圓或弧形dot(r,color)繪制一個指定半徑r和顏色color的圓點undo()撤銷畫筆最后一步動作speed()設(shè)置畫筆的繪制速度,參數(shù)為0~10turtle通過一組函數(shù)控制畫筆的行進動作,進而繪制形狀。8.3.1turtle庫的使用3.畫筆運動函數(shù)例【8-3】繪制隨機顏色、粗細(xì)、瓣數(shù)的雪花。importturtle#導(dǎo)入海龜繪圖模塊importrandomturtle.shape('turtle')#設(shè)置海龜光標(biāo)為小海龜形狀r=random.random()#隨機獲取紅色值g=random.random()#隨機獲取綠色值b=random.random()#隨機獲取藍(lán)色值turtle.pencolor(r,g,b)#設(shè)置畫筆顏色dens=random.randint(6,10)#隨機生成雪花瓣數(shù)turtle.width(random.randint(1,3))snowsize=16#雪花大小forjinrange(dens):turtle.forward(snowsize)turtle.backward(snowsize)turtle.right(360/dens)turtle.hideturtle()#隱藏海龜光標(biāo)turtle.done()#海龜繪圖程序的結(jié)束語句(防止窗口在繪圖動作結(jié)束后被自動關(guān)閉)運行結(jié)果:8.3.2random庫的使用1.random()函數(shù)例【8-4】隨機生成2個數(shù)的函數(shù)應(yīng)用。importrandomprint("第一個隨機數(shù):",random.random())#生成第一個隨機數(shù)print("第二個隨機數(shù):",random.random())#生成第二個隨機數(shù)運行結(jié)果:第一個隨機數(shù):0.40410725560502847第二個隨機數(shù):0.35348632682287706random()函數(shù)用于生成一個0~1的隨機浮點數(shù)。8.3.2random庫的使用2.uniform(a,b)函數(shù)例【8-5】隨機生成2個浮點數(shù)的函數(shù)應(yīng)用。importrandomprint("第一個[50,100]隨機數(shù):",random.uniform(50,100))print("第二個[50,100]隨機數(shù):",random.uniform(100,50))運行結(jié)果

:第一個[50,100]隨機數(shù):67.68694161817494第二個[50,100]隨機數(shù):79.84856987973592返回a與b之間的隨機浮點數(shù)N,范圍為[a,b]。如果a的值小于b的值,則生成的隨機浮點數(shù)N的取值范圍為a<=N<=b;如果a的值大于b的值,則生成的隨機浮點數(shù)N的取值范圍為b<=N<=a。8.3.2random庫的使用3.randint(a,b)函數(shù)例【8-6】隨機生成2個整數(shù)的函數(shù)應(yīng)用。importrandomprint(random.randint(12,20))#生成的隨機數(shù)n:12<=n<=20print(random.randint(20,20))#結(jié)果永遠(yuǎn)是20運行結(jié)果

:1820返回一個隨機的整數(shù)N,N的取值范圍為a<=N<=b。需要注意的是,a和b的取值必須為整數(shù),并且a的值一定要小于b的值。8.3.2random庫的使用4.randrange(start,stop,step)函數(shù)返回某個區(qū)間內(nèi)的整數(shù),可以設(shè)置step,只能傳入整數(shù)。

例如,random.randrange(10,100,2)結(jié)果相當(dāng)于從[10,12,14,16,...96,98]序列中獲取一個隨機數(shù)。8.3.2random庫的使用5.choice(sequence)函數(shù)例【8-7】從序列中隨機抽取1個元素的函數(shù)應(yīng)用。importrandomprint(random.choice('不忘初心牢記使命'))print(random.choice([3,5,1,9,8,6]))print(random.choice(('Tuple','List','Dict')))運行結(jié)果

:記8Dict從sequence中返回一個隨機的元素。其中,sequence參數(shù)可以是序列,列表、元組和字符串。若sequence為空,則會引發(fā)IndexError異常。8.3.2random庫的使用6.shuffle()函數(shù)例【8-8】列表[1,2,3,4,5]中的元素打亂順序的應(yīng)用。importrandomarr=[1,2,3,4,5]random.shuffle(arr)print(arr)運行結(jié)果

:[3,2,1,5,4]用于將列表中的元素打亂順序,俗稱為洗牌。8.3.2random庫的使用7.sample(sequence,k)函數(shù)例【8-9】指定序列([1,2,3,4,5])中隨機獲取3個元素。importrandomarr=[1,2,3,4,5]sub=random.sample(arr,3)print(sub)運行結(jié)果:[3,2,5]從指定序列中隨機獲取k個元素作為一個片段返回,sample函數(shù)不會修改原有序列。8.3.2random庫的使用8.random模塊的綜合應(yīng)用例【8-10】應(yīng)用random模塊,生成由數(shù)字、大寫字母和小寫字母組成的6位驗證碼,要求這三種字符必須同時具備,并且為了便于區(qū)分,不允許出現(xiàn)容易混淆的數(shù)字0和1以及大寫字母O與小寫字母l。fromrandomimportchoice,sample,shufflefromstringimportdigits,ascii_uppercaseasupper,ascii_lowercaseaslowerdChars=digits[2:] #得到除了數(shù)字0,1之外的8個數(shù)字順序構(gòu)成的字符串uChars=upper.replace('O',"") #得到除了大寫字母O之外的所有大寫字母字符串lChars=lower.replace('l',"") #得到除了小寫字母l之外的所有小寫字母字符串a(chǎn)llChars=dChars+uChars+lChars#得到三種可取的全部字符構(gòu)成的字符串a(chǎn)List=[] #初始時,res為空列表aList.append(choice(dChars)) #在列表res末尾追加1個元素,該元素為數(shù)字字符aList.append(choice(uChars)) #在列表res末尾追加1個元素,該元素為可取大寫字母aList.append(choice(lChars)) #在列表res末尾追加元素,該元素為可取小寫字母#在列表res末尾追加含有3個元素的列表,它們隨機取自全部可取字符集aList+=sample(allChars,3)shuffle(aList) #隨機打亂列表aList的元素。該列表中有6個單字符的元素print("6位驗證碼為:"+"".join(aList)) #輸出最終結(jié)果運行結(jié)果:驗證碼為:kvh63H8.3.3時間和日期庫的使用1.time庫系統(tǒng)時間記錄方式Python中的time庫與datetime庫可以處理時間、日期相關(guān)的數(shù)據(jù)。在系統(tǒng)內(nèi)部,日期和時間為從epoch開始的秒數(shù),稱之為時間戳(timestamp)。epoch是系統(tǒng)規(guī)定的時間起始點,它通常是1970年1月1日0時0分0秒。8.3.3時間和日期庫的使用2.time庫時間的表現(xiàn)方式imestamp對象。時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。返回的是float類型,返回時間戳的函數(shù)有time()、clock()。struct_time對象。struct_time元組共有9個屬性,返回struct_time的函數(shù)主要有g(shù)mtime(),localtime(),strptime()。右表所示為列出了這9個元素的屬性和值。格式化時間字符串。此形式使時間更具可讀性。包括自定義格式和固定格式。比如“2022-5-11”。屬性值tm_year年,比如2022tm_mon月,取值1到12tm_mday日,取值1到31tm_hour時,取值0到23tm_min分,取值0到59tm_sec秒,取值0到61(60或61是閏秒)tm_wday星期幾,取值0到6(0表示星期一)tm_yday年內(nèi)第幾天,取值1到366(儒略歷)tm_isdst是否夏令時,0否、1是、-1未知8.3.3時間和日期庫的使用3.time庫常用的函數(shù)time.sleep(secs):線程推遲指定的時間運行,單位為秒。time.time():獲取當(dāng)前時間戳。time.gmtime():gmtime()方法是將一個時間戳轉(zhuǎn)換為UTC時區(qū)(0時區(qū))的struct_time對象,其9個屬性含義同struct_time。time.localtime(secs):將一個時間戳轉(zhuǎn)換為當(dāng)前時區(qū)的struct_time對象。secs缺省為當(dāng)前時間的時間戳。例如,time.localtime()。time.asctime([t]):把一個表示時間的元組或struct_time表示為形如:'SunJun2023:21:051993'的字符串。如果沒有參數(shù),將會將time.localtime()作為參數(shù)傳入。例如,time.asctime()。8.3.3時間和日期庫的使用3.time庫常用的函數(shù)time.ctime(secs):將時間戳轉(zhuǎn)為這個形式的'SunJun2023:21:051993'格式化時間。如果沒有參數(shù),將會將time.localtime()作為參數(shù)傳入。此函數(shù)相當(dāng)于調(diào)用time.asctime(localtime(secs))。importtimea=time.ctime(3600)print(a)運行結(jié)果:ThuJan109:00:001970time.strftime(format[,t]):把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉(zhuǎn)化為格式化的時間字符串。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出。importtimelocal_time=time.localtime()print(time.strftime('%Y-%m-%d%H:%M:%S',local_time))運行結(jié)果:2022-02-0321:39:278.3.3時間和日期庫的使用3.time庫常用的函數(shù)time.strptime(string[,format]):把一個格式化時間字符串轉(zhuǎn)化為struct_time。實際上它和strftime()是逆操作。在這個函數(shù)中,format默認(rèn)為:"%a%b%d%H:%M:%S%Y"。importtimea=time.localtime()print(a)運行結(jié)果:time.struct_time(tm_year=2020,tm_mon=4,tm_mday=1,tm_hour=15,tm_min=52,tm_sec=1,tm_wday=2,tm_yday=92,tm_isdst=0)8.3.3時間和日期庫的使用3.time庫常用的函數(shù)time模塊還包含如下用于測量程序性能的函數(shù)。cess_time():返回當(dāng)前進程的處理器運行時間。此函數(shù)取代time.clock(),后者在Python3.8中已移除。time.perf_counter():返回性能計數(shù)器。time.monotonic():返回單向時鐘獲得的當(dāng)前時間。8.3.3時間和日期庫的使用3.time庫常用的函數(shù)例【8-11】測量程序運行時間。用戶可以使用程序運行到某兩處的時間差值,計算該程序片段所花費的運行時間,也可使用time.time()函數(shù),該函數(shù)返回以秒為單位的系統(tǒng)時間(浮點數(shù))。importtimet1=time.monotonic()#通過單向時鐘獲得計時起始時間sum=0foriinrange(0,9999999):#此循環(huán)表示待計時程序運行時間的程序代碼片段

sum+=it2=time.monotonic()#通過單向時鐘獲得計時終止時間print('程序運行時間:',t2-t1)運行結(jié)果:程序運行時間:1.217000000004191由于不同計算機的配置不同,此程序的運行時間也會不同。注意8.3.3時間和日期庫的使用3.time庫常用的函數(shù)例【8-12】獲取當(dāng)前日期時間。importdatetimed=datetime.date.today()dt=datetime.datetime.now()print("當(dāng)前的日期是%s"%d)print("當(dāng)前的日期和時間是%s"%dt)print("ISO格式的日期和時間是%s"%dt.isoformat())print("當(dāng)前的年份是%s"%dt.year)print("當(dāng)前的月份是%s"%dt.month)print("當(dāng)前的日期是%s"%dt.day)print("dd/mm/yyyy格式是%s/%s/%s"%(dt.day,dt.month,dt.year))print("當(dāng)前小時是%s"%dt.hour)print("當(dāng)前分鐘是%s"%dt.minute)print("當(dāng)前秒是%s"%dt.second)運行結(jié)果:當(dāng)前的日期是2022-05-01當(dāng)前的日期和時間是2022-05-0118:44:10.956169ISO格式的日期和時間是2022-05-01T18:44:10.956169當(dāng)前的年份是2022當(dāng)前的月份是5當(dāng)前的日期是1dd/mm/yyyy格式是1/5/2022當(dāng)前小時是18當(dāng)前分鐘是44當(dāng)前秒是10常見的第三方庫第三方庫的安裝中文處理相關(guān)庫網(wǎng)絡(luò)爬蟲相關(guān)庫其他第三方庫簡介8.48.4.1第三方庫的安裝Python語言有數(shù)十萬第三方庫,覆蓋幾乎所有的信息技術(shù)領(lǐng)域。通過PyPI官網(wǎng)(/)可以查找和瀏覽第三方庫的基本信息。8.4.1第三方庫的安裝pip命令的語法格式:pip<命令>[模塊名]下載和安裝第三方模塊使用Python提供的包管理工具pip命令實現(xiàn)。命令:用指定要執(zhí)行的命令。常用命令有:install(用于安裝第三方模塊)、uninstall(用于卸載已經(jīng)安裝的第三方模塊)、list(用于顯示已經(jīng)安裝的第三方模塊)等。模塊名:可選參數(shù),用于指定要安裝或者卸載的模塊名,當(dāng)命令為install或者uninstall時不能省略。8.4.1第三方庫的安裝例如,安裝第三方的numpy模塊(用于科學(xué)計算)。首先,定位到pip.exe所在目錄,它通常在Python的安裝根目錄下的Scripts文件夾路徑中,然后,在命令窗口中輸入以下代碼:pipinstallnumpy執(zhí)行代碼,將在線安裝numpy模塊,安裝完成之后,顯示右圖。8.4.1第三方庫的安裝利用pip進行包的安裝、升級、卸載,如下所示:(1)指定安裝的軟件包版本,通過使用==、>=、<=、>、<來指定一個版本號。pipinstallmarkdown==2.0(2)升級包,升級包到當(dāng)前最新的版本,可以使用-U或者–upgrade。

pipinstall-Udjango(3)搜索包:

pipsearch"django"(4)列出已安裝的包:

piplist(5)卸載包:

pipuninstalldjango(6)導(dǎo)出包到文本文件,可以用pipfreeze>requirements.txt,將需要的模塊導(dǎo)出到文件里,然后在另一個地方pipinstall-rrequirements.txt再導(dǎo)入。8.4.1第三方庫的安裝當(dāng)某個包安裝完畢后,可在PyCharm中,可以通過“File”

“Setting”查看已經(jīng)安裝包,如右圖。8.4.2中文處理相關(guān)庫1.中文分詞庫jieba的使用jieba是目前最好的Python中文分詞工具,是中文文本處理和分析不可或缺的利器。在文本處理中,常常需要通過分詞,將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列。中文句子中單詞之間沒有形式上的分界符,因而中文分詞比較復(fù)雜和困難,使用Python第三方庫jieba可以方便地實現(xiàn)中文分詞。jieba庫支持三種分詞模式:精確模式:試圖將句子最精確地切開,不存在冗余單詞,適合文本分析。全模式:把句子中所有的可以成詞的詞語都掃描出來,速度非???,會存在冗余單詞,但是不能解決歧義。搜索引擎模式:在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。8.4.2中文處理相關(guān)庫1.中文分詞庫jieba的使用jieba庫提供的主要函數(shù)API如下表:函數(shù)名功能描述cut(s,cut_all=False,HMM=True)對文本s進行分詞,返回可迭代對象。cut_all為默認(rèn)為False,表示分詞模式為精確模式,cut_all為True,表示全模式。HMM默認(rèn)為True表示采用因馬爾可夫模型。lcuts(s,*args,**kwargs)除了返回值為列表對象外,與cut()函數(shù)類似。cut_for_search(s,HMM=True)對文本s進行分詞,返回可迭代對象,分詞模式為搜索引擎模式。lcut_for_search(s,*args,**kwargs)除了返回值為列表對象外,與cut_for_search函數(shù)類似。add_word(w,freq=None,tag=None)為分詞詞典增加新詞wdel_word(w)從分詞詞典刪除詞匯wload_userdict(f)載入用戶自定義分詞詞典,參數(shù)f為用戶自定義詞典所在的UTF-8編

碼的文本文件、字典文件。文件f的結(jié)構(gòu)為:單詞1詞頻詞類型單詞2詞頻詞類型……其中,詞類型為非必須8.4.2中文處理相關(guān)庫1.中文分詞庫jieba的使用例【8-13】使用jieba庫對“2022年的中央一號文件.txt”進行統(tǒng)計分析出現(xiàn)頻率最高的6個詞。該文件為文本文件,字符編碼格式為UTF-8。在此的詞不包括單字的詞。importjiebatxtfile='2022年的中央一號文件.txt'withopen(txtfile,encoding='utf-8')asf:#打開文件

txt=f.read() #讀取文本文件的所有內(nèi)容words=jieba.cut(txt) #使用精確模式對文本進行分詞counts={} #通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)forwordinwords: #遍歷所有詞語,每出現(xiàn)一次其對應(yīng)的值加1iflen(word)==1: #單字的詞語不計算在內(nèi),例如標(biāo)點、介詞、連接詞等

continueelse:counts[word]=counts.get(word,0)+1items=list(counts.items()) #將鍵值對轉(zhuǎn)換成列表items.sort(key=lambdax:x[1],reverse=True) #根據(jù)詞語出現(xiàn)的次數(shù)進行從大到小排序foriinrange(6):word,count=items[i]print(f"{word}\t{count}")運行結(jié)果:鄉(xiāng)村 77推進 63建設(shè) 61農(nóng)村 60發(fā)展 47振興 458.4.2中文處理相關(guān)庫2.詞云庫wordcloud的使用在文本分析中,當(dāng)統(tǒng)計關(guān)鍵字(詞)的頻率后,可以通過詞云圖(也稱為文字云)對文本中出現(xiàn)頻率較高的“關(guān)鍵詞”予以視覺化的展現(xiàn),從而突出文本中的主旨。使用Python第三方庫wordcloud可以方便地得到詞云圖。輸入命令行命令安裝wordcloud庫:

pipinstallwordcloudwordcloud庫的核心是WordColoud類,該庫的所有功能都封裝在WordCloud類中。使用wordcloud庫生成詞云圖,一般遵循以下步驟:實例化一個WordCloud對象,例如,wc=WordCloud()。調(diào)用wc.generate(text),對文本text進行分詞,并生成詞云圖。調(diào)用wc.to_file("wc.png"),把生成的詞云圖輸出到圖像文件wc.png。使用該方法需要本地計算機安裝了MicrosoftVisualC++14.0編譯器否則安裝會失敗,下載該編譯器的網(wǎng)址為:/visual-cpp-build-tools/。注意8.4.2中文處理相關(guān)庫2.詞云庫wordcloud的使用在生成詞云時,Wordcloud默認(rèn)會以空格或標(biāo)點為分隔符對目標(biāo)文本text進行分詞處理,生成的詞云圖的函數(shù)如下表所示:函數(shù)作用fit_words(frequencies)根據(jù)詞頻生成詞云generate(text)根據(jù)文本生成詞云generate_from_frequencies(frequencies[,…])根據(jù)詞頻生成詞云generate_from_text(text)根據(jù)文本生成詞云process_text(text)將長文本分詞并去除屏蔽詞,但僅適用于英語文本,中文分詞還是需要自己用別的庫先行實現(xiàn),再使用fit_words()函數(shù)。recolor([random_state,color_func,colormap])對現(xiàn)有輸出重新著色。重新上色會比重新生成整個詞云快很多to_array()轉(zhuǎn)化為numpyarrayto_file(filename)輸出到文件8.4.2中文處理相關(guān)庫2.詞云庫wordcloud的使用創(chuàng)建WordCloud對象的常用參數(shù)如下表:參數(shù)描述width=n畫布寬度,默認(rèn)為400像素height=n畫布高度,默認(rèn)為400像素scale=n按比例放大或縮小畫布font_path='字體路徑'詞云文字所用字體的路徑,例如:黑體字體文件的路勁通常為'c:/Windows/fonts/simhei.ttf'。min_font_size=n設(shè)置最小的字體大小max_font_size=n設(shè)置最大的字體大小stopwords=words設(shè)置要屏蔽的詞語列表background_color='color'設(shè)置背景板顏色relative_scaling=n設(shè)置字體大小與詞頻的關(guān)聯(lián)性contour_width=n設(shè)置輪廓寬度contour_color='color'設(shè)置輪廓顏色scale=n設(shè)置數(shù)值越大,產(chǎn)生的圖片分辨率越高,字跡越清晰max_words:n顯示詞匯的最大數(shù)目,默認(rèn)為200。mask:nd-array設(shè)置二值遮罩(mask)。例如用圖片指定繪制詞云的范圍,使詞云繪制在圖片除白色之外的區(qū)域。該圖片可預(yù)先載入到numpy的nd-array對象中。8.4.2中文處理相關(guān)庫2.詞云庫wordcloud的使用例【8-14】編寫程序,先通過jieba庫將文件“2022年的中央一號文件.txt”進行文本分詞處理,然后使用Wordcloud庫顯示中文詞云圖。importjiebaimportwordcloudexcludes=['和','的','等','不','與','對','為','發(fā)展','開展','建設(shè)','完善','實施','推進','加強']withopen("2022年的中央一號文件.txt","r",encoding="utf-8")asf:txt=f.read()words=jieba.lcut(txt)#使用精準(zhǔn)模式對文本進行分詞newtxt="".join(words)#使用空格,將jiebar分詞結(jié)果拼接成文本wc=wordcloud.WordCloud(scale=4,font_path="c:/Windows/fonts/simhei.ttf",#黑體字體

width=1000,height=700,max_words=80,background_color="white",stopwords=excludes)wc.generate(newtxt)wc.to_file("2022年的中央一號文件_詞云圖.png")運行結(jié)果將得到生成的詞云圖片文件“2022年的中央一號文件_詞云圖.png”,打開此圖片文件如下圖所示:8.4.2中文處理相關(guān)庫3.其它的文本處理與分析相關(guān)庫一個開源項目,它可讀寫Excel文檔。openpyxl不僅能夠同時讀取和修改Excel文檔,而且可以對Excel文件內(nèi)單元格進行詳細(xì)設(shè)置,包括單元格樣式等內(nèi)容,甚至還支持圖表插入、打印設(shè)置等內(nèi)容,也可讀寫xltm,xltx,xlsm,xlsx等類型的文件。它可以處理數(shù)據(jù)量較大的Excel文件。openpyxl用于創(chuàng)建和更新MicrosoftWord(.docx)文件的Python庫,支持讀取、查詢以及修改doc、docx等格式文件。python-docxNLTK(NaturalLanguageTooIKit)是一套基于Python的自然語言處理工具集。通過在Windows命令行界面執(zhí)行“pipinstallnltk”命令可以安裝最新版本的nltk及其依賴包。nltkPython的PDF解析器,可以從PDF文檔中提取信息。側(cè)重于獲取和分析PDF文件中的文本數(shù)據(jù)。PDFMiner允許獲取某一頁中文本的準(zhǔn)確位置和一些諸如字體、行數(shù)的信息。它包括一個PDF轉(zhuǎn)換器,可把PDF文件轉(zhuǎn)換成HTML等格式。還有一個擴展的PDF解析器,可以用于除文本分析以外的其他用途。pdfminer8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫1.requests與urllib網(wǎng)絡(luò)爬蟲通過跟蹤超鏈接訪問Web頁面的程序。每次訪問一個網(wǎng)頁時,就會分析網(wǎng)頁內(nèi)容,提取結(jié)構(gòu)化數(shù)據(jù)信息。最簡單最直接的方法是使用requests(或urllib)庫請求網(wǎng)頁得到結(jié)果,然后使用正則表達(dá)式匹配分析并抽取信息。requests是使用Python語言基于urllib3編寫的,采用的是Apache2Licensed開源協(xié)議的HTTP庫。requests比urllib更加方便,可以為用戶節(jié)約大量的工作時間。requests庫在處理cookies、登錄驗證、代理設(shè)置等操作方面都更加簡單高效。8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫2.beautifulsoupbeautifulsoup4(BeautifulSoup或bs4)是用于解析和處理HTML和XML的Python三方庫,其最大優(yōu)點是能根據(jù)HTML和XMI,語法建立解析樹,從而高效解析其中的內(nèi)容。beautifulsoup最主要的功能是從網(wǎng)頁抓取數(shù)據(jù),自動將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼。3.scrapyscrapy是最流行的Python語言爬蟲框架之一,用于從網(wǎng)頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。scrapy框架是高層次的Web獲取框架,本身包含了成熟的網(wǎng)絡(luò)爬蟲系統(tǒng)所應(yīng)該具有的部分共用功能,廣泛用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。4.pyspiderpyspider是一款靈活便捷的爬蟲框架。與Scrapy框架相比,pyspider更適合用于中小規(guī)模的爬取工作。pyspider提供了強大的WebUI和腳本編輯器、任務(wù)監(jiān)控和項目管理和結(jié)果查看功能。8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫例【8-15】爬取標(biāo)題新聞。此例演示利用requests庫與beautifulsoap庫爬取某網(wǎng)站主頁上的新聞標(biāo)題信息。1.首先利用瀏覽器打開該網(wǎng)站主頁,獲取的新聞標(biāo)題信息在頁面中的位置爬取此處的新聞標(biāo)題8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫2.為了能查閱到我們想獲取的新聞標(biāo)題信息在Web頁面的HTML代碼信息,可以利用瀏覽器的開發(fā)者工具。以Chrome瀏覽器為例,單擊瀏覽器窗口右上角的菜單圖標(biāo)選擇“更多工具”選擇“開發(fā)者工具”1238.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫3.此時,將在瀏覽器的右側(cè)顯示開發(fā)者工具窗口(灰色虛線框)。單擊“元素”單擊此窗口左上角的箭頭圖標(biāo)然后移動鼠標(biāo)指向我們將要獲取的新聞標(biāo)題處,例如將鼠標(biāo)指向第一個新聞標(biāo)題,此時右側(cè)的開發(fā)者工具窗口將顯示鼠標(biāo)所指處的頁面代碼(紅色虛線框)1238.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫4.在此處,將看到如下圖所示的代碼,不難發(fā)現(xiàn),我們需要的新聞信息在如下的div標(biāo)簽中:<divclass="news"data-spm="top-news1">

十條新聞信息在此標(biāo)簽內(nèi)</div>這個標(biāo)簽名稱為div,它有兩個屬性,其一是名為class的屬性,其值為"news",其二是名為data-spm屬性,其值為"top-news1",8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫利用以上1~4步驟方法,進一步查看頁面中其它部分的代碼。通過對頁面代碼的對比分析后,我們不難確定:利用此div標(biāo)簽的信息就能唯一定位頁面我們想要爬取的十條新聞的標(biāo)題。至此,我們所需信息的定位特征得以確定。下面進行Python程序代碼設(shè)計。importrequests//導(dǎo)入requests庫frombs4importBeautifulSoupasBS4//導(dǎo)入beautifulsoup庫url=https://

//此為本例中需要爬取的Web頁面的URL(即通常所說的網(wǎng)址)。//調(diào)用requests庫的函數(shù)get(url),此函數(shù)將根據(jù)參數(shù)url所確定的網(wǎng)址請求相應(yīng)的Web頁面,返回值//response為網(wǎng)站對此請求的響應(yīng)response=requests.get(url)//將獲得response.text構(gòu)造BeautifulSoup的對象mySoupmySoup=BS4(response.text,features=“l(fā)xml”)//利用mySoup對象的find_all()函數(shù),查找標(biāo)簽名為div并且由屬性class其值為"news"res=mySoup.find_all("div",attrs={"class":"news","data-spm":"top-news1"})//res[0]表示查找到的第一個頁面元素對象,其中的文本內(nèi)容可由res[0].text得到print(res[0].text)8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫以上程序爬蟲輸出的結(jié)果為:從以上輸出結(jié)果可以看出,此程序已經(jīng)能夠爬取到頁面中的新聞標(biāo)題信息,并且多行新聞標(biāo)題之間由換行分隔,但是,有兩點不足:(1)有許多的多余的換行,(2)在Web頁面中由“|”分隔的屬于同一行標(biāo)題中的并列標(biāo)題,在此均由換行分隔了。8.4.3網(wǎng)絡(luò)爬蟲相關(guān)庫將以上代碼的第7行改為如下代碼,就能得到與Web頁面中展現(xiàn)的那樣十條新聞標(biāo)題了。print(res[0].text.replace("\n|\n","|").replace("\n\n","").strip())修改后結(jié)果如右圖所示。8.4.4其他第三方庫簡介科學(xué)計算與數(shù)據(jù)分析庫數(shù)據(jù)可視化庫用戶圖形界面(GUI)相關(guān)庫Web開發(fā)相關(guān)庫游戲開發(fā)相關(guān)庫機器學(xué)習(xí)相關(guān)庫其他

科學(xué)計算與數(shù)據(jù)分析庫1.numpynumpy(NumericalPython)是Python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。numpy包括一個強大的N維數(shù)組對象Array;比較成熟的(廣播)函數(shù)庫;用于整合C/C++和Fortran代碼的工具包;實用的線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)。numpy庫是Python的數(shù)值計算擴展,其內(nèi)部使用C語言編寫,對外采用Python語言進行封裝,因此基于numpy的Python程序可以達(dá)到接近C語言的處理速度。numpy是其他Python數(shù)據(jù)分析庫的基礎(chǔ)依賴庫,已經(jīng)成為科學(xué)計算事實上的“標(biāo)準(zhǔn)庫”。許多科學(xué)計算庫(包括matplotlib、pandas、scipy和sympy等)均基于numpy庫。通過在Windows命令行界面執(zhí)行“pipinstallnumpy”命令可以安裝最新版本的numpy及其依賴包。

科學(xué)計算與數(shù)據(jù)分析庫2.scipyscipy是一個開源的Python算法庫和數(shù)學(xué)工具包。scipy是基于numpy的科學(xué)計算庫,用于數(shù)學(xué)、科學(xué)、工程學(xué)等領(lǐng)域,很多有一些高階抽象和物理模型需要使用scipy。scipy包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計算。通過在Windows命令行界面執(zhí)行“pipinstallscipy”命令可以安裝最新版本的scipy及其依賴包。

科學(xué)計算與數(shù)據(jù)分析庫3.pandaspandas是Python語言的一個擴展程序庫,用于數(shù)據(jù)分析。pandas是一個開放源碼、BSD許可的庫,提供高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。pandas名字衍生自術(shù)語“paneldata”(面板數(shù)據(jù))和“Pythondataanalysis”(Python數(shù)據(jù)分析)。pandas一個強大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集,基礎(chǔ)是numpy(提供高性能的矩陣運算)。Pandas可以從各種文件格式比如CSV、JSON、SQL、MicrosoftExcel導(dǎo)入數(shù)據(jù)。pandas可以對各種數(shù)據(jù)進行運算操作,比如歸并、再成形、選擇,還有數(shù)據(jù)清洗和數(shù)據(jù)加工特征。pandas廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計學(xué)等各個數(shù)據(jù)分析領(lǐng)域。通過在Windows命令行界面執(zhí)行“pipinstallpandas”命令可以安裝最新版本的pandas及其依賴包。

數(shù)據(jù)可視化庫1.matplotlibmatplotlib是提供數(shù)據(jù)繪圖功能的Python第三方庫,廣泛用于科學(xué)計算的二維數(shù)據(jù)可視化,可以繪制100多種的數(shù)據(jù)可視化效果。通過在Windows命令行界面執(zhí)行“pipinstallmatplotlib”命令可以安裝最新版本的matplotlib及其依賴包。2.seabornseaborn是基于Matplotlib進行再封裝開發(fā)的第三方庫,并且支持numPy和pandas。seaborn能夠?qū)y(tǒng)計類數(shù)據(jù)進行有效的可視化展示,它提供了一批高層次的統(tǒng)計類數(shù)據(jù)的可視化展示效果。通過在Windows命令行界面執(zhí)行“pipinstallseaborn”命令可以安裝最新版本的seaborn及其依賴包。

數(shù)據(jù)可視化庫3.pyechartspyecharts是一個用于生成echarts圖表的類庫。echarts是百度開源的一個數(shù)據(jù)可視化庫,用echarts生成的圖可視化效果非常棒。使用pyechart庫可以在Python中生成echarts數(shù)據(jù)圖。4.tvtkvtk(/)是一套三維的數(shù)據(jù)可視化工具,它由C++編寫,包涵了近千個類幫助我們處理和顯示數(shù)據(jù)。它在Python下有標(biāo)準(zhǔn)的綁定,不過其API和C++相同,不能體現(xiàn)出Python作為動態(tài)語言的優(yōu)勢。因此開發(fā)了一套tvtk庫對標(biāo)準(zhǔn)的vtk庫進行包裝,提供了Python風(fēng)格的API、支持Trait屬性和numpy的多維數(shù)組。5.mayavimayavi基于vtk開發(fā)的Python第三方庫,可以方便快速繪制三維可視化圖形。mayavi也被稱為mayavi2。通過在Windows命令行界面執(zhí)行“pipinstallmayavi”命令可以安裝最新版本的mayavi及其依賴包。

用戶圖形界面(GUI)相關(guān)庫1.pyqtpyqt是一個創(chuàng)建GUI應(yīng)用程序的工具包。它是Python編程語言和Qt庫的成功融合。Qt庫是最強大的庫之一。pyqt是由PhilThompson開發(fā)。pyqt實現(xiàn)了一個Python模塊集。它有超過300類,將近6000個函數(shù)和方法。它是一個多平臺的工具包,可以運行在所有主要操作系統(tǒng)上,包括UNIX,Windows和Mac。

用戶圖形界面(GUI)相關(guān)庫2.wxPythonwxPython是一個用于wxWidgets(用C++編寫)的Python包裝器,這是一個流行的跨平臺GUI工具包。由RobinDunn和HarriPasanen共同開發(fā),wxPython被實現(xiàn)為一個Python擴展模塊。它可以從官方網(wǎng)站下載。wxPythonAPI中的主要模塊包括一個核心模塊。它由wxObject類組成,它是API中所有類的基礎(chǔ)。wxPythonAPI具有GDI(圖形設(shè)備接口)模塊。它是一組用于繪制小部件的類。像字體,顏色,畫筆等類是其中的一部分。所有容器窗口類都在Windows模塊中定義。通過在Windows命令行界面執(zhí)行“pipinstallwxPython”命令可以安裝最新版本的wxPython及其依賴包。

用戶圖形界面(GUI)相關(guān)庫3.PyGTKPyGTK是一組用Python和C編寫的包裝器,用于GTK+GUI庫。它是GNOME項目的一部分。它提供了用Python構(gòu)建桌面應(yīng)用程序的全面工具。其他流行的GUI庫的Python綁定也可用。PyQt是QT庫的Python端口。Web開發(fā)相關(guān)庫1.DjangoDjango是Python生態(tài)中最流行的開源Web應(yīng)用框架。Django采用MTV模式(Model模型、Template模板、View視圖)模型,可以高效地實現(xiàn)快速Web網(wǎng)站開發(fā)。通過在Windows命令行界面執(zhí)行“pipinstalldjango”命令可以安裝最新版本的Django及其依賴包。2.pyramidpyramid是一個通用、開源的PythonWeb應(yīng)用程序開發(fā)框架。pyramid的特色是靈活性,開發(fā)者可以靈活選擇所使用的數(shù)據(jù)庫、模板風(fēng)格、URL結(jié)構(gòu)等內(nèi)容。通過在Windows命令行界面執(zhí)行“pipinstallpyramid”命令可以安裝最新版本的Pyramid及其依賴包。Web開發(fā)相關(guān)庫3.FlaskFlask是一個使用Python編寫的輕量級Web應(yīng)用框架。其WSGI工具箱采用Werkzeug,模板引擎則使用Jinja2。Flask使用BSD授權(quán)。通過在Windows命令行界面執(zhí)行“pipinstallflask”命令可以安裝最新版本的Flask及其依賴包。4.fastapifastapi是一個現(xiàn)代的,快速(高性能)PythonWeb框架?;跇?biāo)準(zhǔn)的Python類型提示,使用Python3.6+構(gòu)建API的Web框架。

游戲開發(fā)相關(guān)庫1.pygamepygame是一個入門級Python游戲開發(fā)框架,提供了大量與游戲相關(guān)的底層邏輯和功能支持。pygame是在SDL庫基礎(chǔ)上進行封裝的Python第三方庫。SDL(SimpleDirectMediaLayer,簡單直接媒體層)是開源、跨平臺的多媒體開發(fā)庫,通過OpenGL和Direct3D底層函數(shù)提供對音頻、鍵盤、鼠標(biāo)和圖形硬件的簡潔訪問。除了制作游戲外,Pygame還用于制作多媒體應(yīng)用程序。通過在Windows命令行界面執(zhí)行“pipinstallpygame”命令可以安裝最新版本的pygame及其依賴包。

游戲開發(fā)相關(guān)庫2.panda3dpanda3d是一個開源、跨平臺的3D渲染和游戲開發(fā)庫。panda3d由迪士尼和卡耐基隆大學(xué)娛樂技術(shù)中心共同進行開發(fā),支持很多先進游戲引擎的特性,例如法線貼圖、光澤貼圖、HDR、卡通渲染和線框渲染等。通過在Windows命令行界面執(zhí)行“pipinstallpanda3d”命令可以安裝最新版本的panda3d及其依賴包。

游戲開發(fā)相關(guān)庫3.cocos2dcocos2d是一個構(gòu)建2D游戲和圖形界面交互式應(yīng)用的框架。cocos2d基于OpenGI進行圖形渲染,能夠利用GPU進行加速。cocos2d引擎采用樹形結(jié)構(gòu)來管理游戲?qū)ο螅獋€游戲劃分為不同場景,一個場景又分為不同層,每個層處理并響應(yīng)用戶事件。通過在Windows命令行界面執(zhí)行“pipinstallcocos2d”命令可以安裝最新版本的cocos2d及其依賴包。

機器學(xué)習(xí)相關(guān)庫1.scikit-learnscikit-learn(以前稱為scikits.learn,也稱為sklearn)是針對Python編程語言的免費軟件機器學(xué)習(xí)庫。它具有各種分類,回歸和聚類算法,包括支持向量機,隨機森林,梯度提升,k均值和DBSCAN,并且旨在與Python數(shù)值科學(xué)庫numPy和scipy聯(lián)合使用。通過在Windows命令行界面執(zhí)行“pipinstallscikit-learn”命令可以安裝最新版本的scikit-Iearn及其依賴包。

機器學(xué)習(xí)相關(guān)庫2.tensorflowtensorflow?是一個基于數(shù)據(jù)流編程(dataflowpr

溫馨提示

  • 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

提交評論