《Python程序設(shè)計基礎(chǔ)》課件-項目8 模塊_第1頁
《Python程序設(shè)計基礎(chǔ)》課件-項目8 模塊_第2頁
《Python程序設(shè)計基礎(chǔ)》課件-項目8 模塊_第3頁
《Python程序設(shè)計基礎(chǔ)》課件-項目8 模塊_第4頁
《Python程序設(shè)計基礎(chǔ)》課件-項目8 模塊_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目8模塊任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動模塊就是用一堆的代碼實現(xiàn)了一些功能的代碼的集合,通常一個或者多個函數(shù)寫在一個.py文件里,而如果有些功能實現(xiàn)起來很復(fù)雜,那么就需要創(chuàng)建n個.py文件,這n個.py文件的集合就是模塊。

任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動使用import語句導(dǎo)入模塊importmoduels(模塊名字),導(dǎo)入整個moduels模塊,這種導(dǎo)入方式比較占用內(nèi)存。importmoduels(模塊名字)asXX,這里是導(dǎo)入整個moduels模塊的同時給它取一個別名XX,因為有些模塊名字比較長,用一個縮寫的別名代替在下次用到它時就比較方便。from…import語句導(dǎo)入模塊frommodules(模塊名字)importfunc(方法),從一個模塊modules里導(dǎo)入方法func。你要用到模塊里的什么方法就從那個模塊里導(dǎo)入哪個方法,這樣占用的內(nèi)存就比較少。也可以用別名表示:frommodules(模塊名字)importfunc(方法)asXX。frompackage.modulesimportfunc(方法),從一個包的模塊里導(dǎo)入方法這個方法跟上面那種基本一樣,占用的內(nèi)存也比較少。模塊搜索目錄當你導(dǎo)入一個模塊,Python解析器對模塊位置的搜索順序是:①當前目錄;②如果不在當前目錄,則搜索在shell變量PYTHONPATH下的每個目錄;③如果都找不到,Python會查看默認路徑。UNIX下,默認路徑一般為/usr/local/lib/python/。模塊搜索路徑存儲在system模塊的sys.path變量中。變量里包含當前目錄,PYTHONPATH是由安裝過程決定的默認目錄。PYTHONPATH作為環(huán)境變量,PYTHONPATH由裝在一個列表里的許多目錄組成。PYTHONPATH的語法和shell的PATH變量一樣。在

Windows系統(tǒng),典型的PYTHONPATH如下:setPYTHONPATH=c:\python37\lib;任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動一個模塊被另一個程序第一次引入時,其主程序?qū)⑦\行。如果我們想在模塊被引入時,模塊中的某一程序塊不執(zhí)行,我們可以用__name__屬性來使該程序塊僅在該模塊自身運行時執(zhí)行。#!/usr/bin/python3#Filename:using_name.pyif__name__=='__main__':print('程序自身在運行')else:print('我來自另一模塊')上述代碼的執(zhí)行結(jié)果為:$pythonusing_name.py程序自身在運行$python>>>importusing_name我來自另一模塊說明:Python中用__name__屬性避免執(zhí)行測試代碼。如果當前模塊是啟動模塊,則__name__屬性的值為__main__。若該模塊是被其他程序?qū)?,則__name__屬性的值為文件名。任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動包是一種管理Python模塊命名空間的形式,采用"點模塊名稱"。比如一個模塊的名稱是A.B,那么他表示一個包A中的子模塊B。采用點模塊名稱這種形式使用模塊,使得不同不同模塊之間的全局變量相互不影響。例如:不同的作者都可以提供NumPy模塊,或者是Python圖形庫。Python程序的包結(jié)構(gòu)這里給出了一種可能的包結(jié)構(gòu)(在分層的文件系統(tǒng)中):sound/頂層包__init__.py初始化sound包 formats/文件格式轉(zhuǎn)換子包 __init__.pywavread.pywavwrite.pyaiffread.pyaiffwrite.pyauread.pyauwrite.py... effects/聲音效果子包__init__.pyecho.pysurround.pyreverse.py...filters/filters子包__init__.pyequalizer.pyvocoder.pykaraoke.py創(chuàng)建和使用包在導(dǎo)入一個包的時候,Python會根據(jù)sys.path中的目錄來尋找這個包中包含的子目錄。目錄只有包含一個叫做__init__.py的文件才會被識別為一個包,主要是為了避免一些濫俗的名字(比如叫做string)影響搜索路徑中的有效模塊。最簡單的情況,放一個空的:file:__init__.py就可以了。當然這個文件中也可以包含一些初始化代碼或者為(將在后面介紹的)__all__變量賦值。用戶可以每次只導(dǎo)入一個包里面的特定模塊,比如:importsound.effects.echo這將會導(dǎo)入子模塊:sound.effects.echo。他必須使用全名去訪問:sound.effects.echo.echofilter(input,output,delay=0.7,atten=4)還有一種導(dǎo)入子模塊的方法是:fromsound.effectsimportecho這同樣會導(dǎo)入子模塊:echo,并且他不需要那些冗長的前綴,所以他可以這樣使用:echo.echofilter(input,output,delay=0.7,atten=4)任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動Python模塊大概分為三種:自定義模塊、內(nèi)置模塊、開源模塊(第三方模塊),常見的有以下這些:requests、timedatetime、random、os、sys等。接下來重點介紹一下Python第三方模塊。Python第三方模塊有哪些?①Requests。KennethReitz寫的最富盛名的http庫,每個Python程序員都應(yīng)該會使用它;②Scrapy。如果你是從事Python爬蟲相關(guān)的工作,這個庫必不可少;③WxPython。Python的一個GUI工具,主要用它替代tkinter;④Pillow。它是PIL的一個友好分支,對于用戶比PIL更加友好,對于任何在圖形領(lǐng)域工作的人是必備的庫;⑤SQLalchemy。一個數(shù)據(jù)庫的庫,對它的評價中等;⑥Beautifulsoup。這個雖然說比較慢,但是它的xml和html的解析庫對于新手來講非常好用;⑦Twisted。對于網(wǎng)絡(luò)應(yīng)用開發(fā)者最重要的工具,它有非常優(yōu)美的api,被很多Python開發(fā)大牛使用;⑧Numpy。它為Python提供了很多高級的數(shù)學(xué)方法;⑨Scipy。這是一個Python的算法和數(shù)學(xué)工具庫,它的功能把很多科學(xué)家從ruby吸引到了Python;⑩Matplotlib。一個繪制數(shù)據(jù)圖的庫,對于數(shù)據(jù)科學(xué)家或者分析師非常有用。任務(wù)1模塊概述任務(wù)2自定義模塊任務(wù)3以主程序的形式執(zhí)行任務(wù)4Python中的包任務(wù)5引用其他模塊任務(wù)6實踐活動實踐一:輸入用戶名網(wǎng)站的注冊登錄業(yè)務(wù)都需要用戶名,用戶名的字符有其特殊的規(guī)范性,一般是數(shù)字和大小寫字母。本實例要求編寫程序,實現(xiàn)輸入8位用戶名的功能。1.實踐分析本實例的用戶名由8個字符組成,每個字符由大小寫英文字母或阿拉伯數(shù)字組成?;緦崿F(xiàn)思路為:(1)創(chuàng)建一個空字符串code_list。(2)輸入一個字符并判斷是否符合要求。(3)將符合要求的字符逐個拼接到code_list后面。以上實現(xiàn)思路中的步驟(2)是驗證碼功能的核心部分,此部分主要判斷輸入的8個字符的功能,確保每次生成的字符類型只能為大寫字母、小寫字母、數(shù)字的任一種。為確保每次輸入的是所選類型中的字符,這里需要按三種類型給隨機數(shù)指定范圍,即數(shù)字類型對應(yīng)的數(shù)值范圍為0~9,大寫字母對應(yīng)的ACSII碼范圍為65~90,小寫字母對應(yīng)的ACSII碼范圍為97~122。2.代碼實現(xiàn)本實例的具體實現(xiàn)代碼如下所示:"""chr()函數(shù)返回值是當前整數(shù)對應(yīng)的ascii字符。ord()函數(shù)返回值是當前字母對應(yīng)的ascii字符。"""defverifycode():code_list=''#每一位用戶名都有三種可能(大寫字母,小寫字母,數(shù)字)foriinrange(1,9):#控制用戶名生成的位數(shù)adminInput=ord(input("請輸入密碼第:%d位:"%i))ifadminInput>=65andadminInput<=90:code_list=code_list+str(chr(adminInput))elifadminInput>=97andadminInput<=122:code_list=code_list+str(chr(adminInput))elifadminInput>=48andadminInput<=57:code_list=code_list+str(chr(adminInput))elifadminInput>=48andadminInput<=57:code_list=code_list+str(chr(adminInput))else: print("請輸入范圍內(nèi)的符號")returncode_list

if__name__=='__main__':verifycode=verifycode()print(verifycode)以上代碼定義了一個驗證輸入字符的函數(shù)verifycode(),該函數(shù)中首先定義了一個空字符串code_list,然后使用for語句控制循環(huán)執(zhí)行的次數(shù),即字符的個數(shù),將輸入字符后拼接到code_list中,最后返回code_list。實踐二:雙色球雙色球由中福彩中心發(fā)行和組織銷售,由各省福彩機構(gòu)在所轄區(qū)域內(nèi)銷售。采用計算機網(wǎng)絡(luò)系統(tǒng)發(fā)行,在各省福彩機構(gòu)設(shè)置的銷售網(wǎng)點銷售,每周二、周四、周日開獎。雙色球投注區(qū)分為紅色球號碼區(qū)和藍色球號碼區(qū),紅色球號碼區(qū)由1-33共三十三個號碼組成,藍色球號碼區(qū)由1-16共十六個號碼組成。投注時選擇6個紅色球號碼和1個藍色球號碼組成一注進行單式投注,每注金額人民幣2元。現(xiàn)可以模擬雙色球號碼生成器,使用Random模塊。1.實踐分析紅色球號碼區(qū)由1-33共三十三個號碼組成,共6個紅色球號碼。藍色球號碼區(qū)由1-16共十六個號碼組成,共1個藍色球號碼。一注雙色球由6個紅球號碼和1個藍球號碼組成。一注雙色球的產(chǎn)生過程為隨機在1至33個號碼中選取6個不重復(fù)的號碼,如是號碼為個位數(shù),如5,則在前面加1個0,變成05,6個數(shù)字選出后要進行排序,確保小數(shù)在前,大數(shù)在后,再隨機在1至16中抽取一個數(shù)作為藍球。再將紅球與藍球進行組合,生成一注雙色球。若要生成多注雙色球,在二維列表中存儲相應(yīng)的號碼。并按照每注在一起打印。

2.代碼實現(xiàn)本實例的具體實現(xiàn)代碼如下所示:#導(dǎo)入sys模塊是python內(nèi)置的importsys#導(dǎo)入自定義模塊所在的目錄路徑為模塊路徑sys.path.append(r"D:\Python\python0\python0")#導(dǎo)入模塊importMyModular#Greatnumber=[]print('大樂透號碼生成器')#提示用戶輸入要隨機大樂透的數(shù)量并獲取輸入的內(nèi)容time=input('請輸入要生成的大樂透號碼注數(shù):')#根據(jù)注數(shù)獲取大樂透號碼Greatnumber=MyModular.Great_lotto(int(time))#循環(huán)打印每個號碼foriinrange(0,int(time)):#打印的時候根據(jù)格式顯示號碼print('{}{}{}{}{}{}{}'.format(Greatnumber[i][0],Greatnumber[i][1],Greatnumber[i][2],Greatnumber[i][3],Greatnumber[i][4],Greatnumber[i][5],Greatnumber[i][6]))在上面的程序中,首先,導(dǎo)入MyModular模塊,再使用MyModular中的double_ball(times)函數(shù)。存在MyModular包中的__init__.py文件:#導(dǎo)入隨機模塊importrandom#雙色球號碼生成defdouble_ball(times):#創(chuàng)建返回的號碼空列表DoubleBallnumber=[]#根據(jù)隨機注釋循環(huán)foriinrange(0,times):#創(chuàng)建空列表numbers=[]#創(chuàng)建數(shù)字為1到33的紅色球列表redlist=list(range(1,34))#在紅球列表中選取6個元素,生成紅色球.numberred=random.sample(redlist,6)#創(chuàng)建數(shù)字為1到16的藍色球列表bulelist=list(range(1,17)

溫馨提示

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

評論

0/150

提交評論