新聞中心
一.模塊簡介
python開發(fā)中,每一個(gè).py文件都可以看作是一個(gè)模塊,模塊內(nèi)部的函數(shù)或者方法可以被其他模塊調(diào)用,至于函數(shù)或者方法是具體如何實(shí)現(xiàn)的,調(diào)用者不需要關(guān)心。


假如項(xiàng)目中既含有UI也有邏輯代碼還有功能實(shí)現(xiàn),如果全寫在一個(gè)py文件,可能會(huì)有幾萬甚至十幾萬行代碼,顯得代碼很臃腫,為了方便代碼閱讀和維護(hù),我們可以將項(xiàng)目拆分為多個(gè)模塊,不同的模塊實(shí)現(xiàn)不同的功能,這樣分工合作開發(fā)效率也高,而且就算出現(xiàn)bug也方便定位。

二.模塊分類
1.系統(tǒng)內(nèi)置模塊
python中有一些內(nèi)置模塊我們直接調(diào)用,比如:sys、time、json等,具體使用方法我們在調(diào)用模塊中詳細(xì)講解;
2.第三方開源模塊
安裝第三方開源模塊,可以直接cmd打開控制臺或者打開pycharm終端運(yùn)行 pip install <模塊名> 即可,前提是anacoanda已經(jīng)安裝正確,例如:學(xué)習(xí)爬蟲的時(shí)候需要安裝request
1 | pipinstallrequest |
3.自定義模塊
除了前面兩種模塊,我們也可以自己寫模塊來供自己調(diào)用,具體實(shí)現(xiàn)什么功能有自己決定,在后面的模塊調(diào)用中會(huì)有詳細(xì)講解,值得注意的是:模塊名字不能和內(nèi)置模塊名字一樣,會(huì)造成沖突;
三.調(diào)用模塊
使用?import關(guān)鍵字?導(dǎo)入模塊,并放置在代碼最開始位置;同一個(gè)模塊不管執(zhí)行了多少次?import <模塊名>,實(shí)際上只會(huì)被導(dǎo)入一次。
為了講解關(guān)于模塊的調(diào)用方法,假如我們有一個(gè)計(jì)算加減乘除的模塊文件calculator.py,代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:calculator.py @Time:2019/10/11 21:25 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ # 定義一個(gè)全局變量 name="calculator" # 加法 defadd(x,y): returnx+y # 減法 defsub(x,y): returnx-y # 乘法 defmultiplication(x,y): returnx*y # 除法 defdivision(x,y): returnx/y # 使用內(nèi)置函數(shù)eval計(jì)算表達(dá)式的結(jié)果,如果表達(dá)式有誤,直接拋異常 defget_result(input_str): try: returneval(input_str) exceptExceptionase: print("表達(dá)式輸入異常!") returnNone |
如果已經(jīng)忘記python 異常處理的小伙伴請參考:??python 異常處理詳細(xì)講解
1.import <模塊名>
新建一個(gè)py文件,用于調(diào)用模板文件 calculator.py 中的函數(shù),代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # 導(dǎo)入模塊 importcalculator # 調(diào)用calculator模塊中的add函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名 result=calculator.add(2,5) print(result) # 調(diào)用calculator模塊中的sub函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名 result=calculator.sub(2,5) print(result) # 調(diào)用calculator模塊中的multiplication函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名 result=calculator.multiplication(2,5) print(result) # 調(diào)用calculator模塊中的add函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名 result=calculator.division(2,5) print(result) # 調(diào)用calculator模塊中的get_result函數(shù) : 模塊名.函數(shù)名??或者 模塊名.變量名 result=calculator.get_result("3+2*8-40") print(result) # 調(diào)用calculator模塊中的name變量 : 模塊名.函數(shù)名??或者 模塊名.變量名 print(calculator.name) |
輸出結(jié)果:
1 2 3 4 5 6 | 7 -3 10 0.4 -21 calculator |
注意:調(diào)用模塊中的函數(shù)時(shí)需要指明函數(shù)或者變量來自哪個(gè)模板:<模塊名>.函數(shù)名? ? <模塊名>.變量名
2.from <模塊名> import <函數(shù)或者變量>,<函數(shù)或者變量>,<函數(shù)或者變量>…..
做一個(gè)簡單理解,從哪個(gè)模塊導(dǎo)入哪些函數(shù)或者變量,外部導(dǎo)入模塊后調(diào)用時(shí)只能調(diào)用導(dǎo)入的函數(shù)或者變量,模塊中沒有導(dǎo)入的變量或者函數(shù)不能調(diào)用,示例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ''' 從模塊calculator中導(dǎo)入add,sub兩個(gè)函數(shù), 意味著調(diào)用calculator模塊時(shí),只能調(diào)用add,sub兩個(gè)函數(shù), calculator 模塊中的其他變量或者函數(shù)無法調(diào)用 ''' fromcalculatorimportadd,sub # 在代碼頂部已經(jīng)聲明add函數(shù)從calculator導(dǎo)入,可以直接使用,不需要帶上模板名 result=add(2,5) print(result) # 在代碼頂部已經(jīng)聲明sub函數(shù)從calculator導(dǎo)入,可以直接使用,不需要帶上模板名 result=sub(2,5) print(result) # 錯(cuò)誤寫法:該模塊并沒有導(dǎo)入name變量 # result = multiplication(2,5) # 錯(cuò)誤寫法:該模塊并沒有導(dǎo)入name變量 # result = division(2,5) # 錯(cuò)誤寫法:該模塊并沒有導(dǎo)入name變量 # result = calculator.get_result("3+2*8-40") # 錯(cuò)誤寫法:該模塊并沒有導(dǎo)入name變量 # print(calculator.name) |
3.from <模塊名> import *
這種寫法表示直接導(dǎo)入模塊中的所有內(nèi)容,意味著模塊中的函數(shù)或者變量都可以使用,該寫法實(shí)際上和第二種導(dǎo)入方法類似,示例代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # 導(dǎo)入calculator 模塊中所有函數(shù)和變量 fromcalculatorimport* # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 result=add(2,5) print(result) # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 result=sub(2,5) print(result) # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 result=multiplication(2,5) print(result) # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 result=division(2,5) print(result) # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 result=get_result("3+2*8-40") print(result) # 在代碼頂部已經(jīng)聲明導(dǎo)入calculator模塊所有內(nèi)容,可以直接使用,不需要帶上模板名 print(name) |
輸出:
1 2 3 4 5 6 | 7 -3 10 0.4 -21 calculator |
使用該方法導(dǎo)入模塊時(shí)有一個(gè)缺陷:如果同時(shí)導(dǎo)入多個(gè)模塊文件,如果模塊中的函數(shù)或者變量重名,編譯器也不知道具體是用哪一個(gè)模塊重名的函數(shù)或者變量,會(huì)造成意想不到的bug,往往這種bug最難查找!
四.簡單的計(jì)算器
利用上面的calculator模塊,再加上前面的python基礎(chǔ)知識,其實(shí)我們已經(jīng)可以寫一個(gè)簡單的計(jì)算器了,唯獨(dú)沒有界面而已,至于界面后面會(huì)有pyqt5的教程,暫時(shí)不做過多講解。計(jì)算器代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # 導(dǎo)入內(nèi)置模塊time,計(jì)算耗時(shí),默認(rèn)單位秒 importtime # 導(dǎo)入calculator 模塊 importcalculator whileTrue: # 獲取表達(dá)式 input_str=input("請輸入表達(dá)式:") ifinput_str=='q':# 輸入 q 退出程序 break time_start=time.clock() print(calculator.get_result(input_str)) time_end=time.clock() # 將 秒 轉(zhuǎn)為 毫秒 print("計(jì)算耗時(shí):{}毫秒".format((time_end-time_start)*1000)) print("退出計(jì)算,程序結(jié)束!") |
測試結(jié)果:

五.重點(diǎn)總結(jié)
1.注意模塊的幾種導(dǎo)入方式,python開發(fā)中推薦使用寫法一的方式導(dǎo)入:import <模塊名>;
2.注意內(nèi)置函數(shù)和內(nèi)置模塊的區(qū)別:內(nèi)置函數(shù)是任何模塊都可以直接調(diào)用,內(nèi)置模塊需要import模塊之后才能調(diào)用模塊里面的函數(shù);
3.不同的模塊中可以存在相同的變量名或者函數(shù)名,但是不能與內(nèi)置函數(shù)名或者內(nèi)置模塊名字重復(fù),避免造成沖突;
猜你喜歡:
1.python內(nèi)置函數(shù)input/eval函數(shù)
2.字典推導(dǎo)式
3.列表推導(dǎo)式
4.python異常處理
轉(zhuǎn)載請注明:猿說Python???python模塊
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁名稱:python模塊import(26)-創(chuàng)新互聯(lián)
瀏覽地址:http://www.dlmjj.cn/article/dihdhj.html


咨詢
建站咨詢
