Python官方教程閱讀總結(jié)-模塊

模塊(module):包含python語句的文件


模塊的文件名:模塊名.py

變量__name__的值記錄了一個模塊的文件名

1. 導(dǎo)入模塊

? ? 假設(shè)有一個模塊,文件名是demo.py, 該模塊定義了兩個函數(shù),func1 和 func2

? ? 導(dǎo)入模塊有以下幾種常見的形式:

? ? (1)import demo

? ? ? ? ? ? 調(diào)用模塊中的函數(shù)就可以用 demo.func1(), demo.func2()

? ? (2)import demo as d

? ? ? ? ? ? 這種方法導(dǎo)入模塊的同時,用as 關(guān)鍵字給模塊取了一個別名,方便后續(xù)的使用,這種情況下調(diào)用該模塊下的函數(shù)就變?yōu)椋篸.func1(), d.func2()

? ? (3)from demo import func1, func2

? ? ? ? ????從demo模塊中導(dǎo)入其中的兩個函數(shù),func1 和 func2。這種方法多用于一個模塊下有多個函數(shù)以及類等,這些就可以把所需要用的函數(shù)給導(dǎo)入進(jìn)去就可以,此時函數(shù)的調(diào)用也更加簡單了,不用再加所在模塊的模塊名了,例如: func1(), func2()

? ? (4)from demo import *

? ? ? ? ? ? 把demo模塊下的所有非下劃線‘_'開頭的名稱都導(dǎo)入進(jìn)去,這樣寫會使代碼書寫比較方便,但一般不建議這樣寫,因為不知道都導(dǎo)入了哪些內(nèi)容,不利于代碼閱讀。此時函數(shù)調(diào)用如上,可以直接 func1()


2. 以腳本方式執(zhí)行模塊

? ? 除了像上面那樣導(dǎo)入模塊,還可以以腳本方式執(zhí)行模塊,例如:

? ? python demo.py 參數(shù)

? ? 執(zhí)行模塊的時候, 該模塊的 __name__ 會被賦值為 “__main__”. 這就需要你在模塊的末尾添加:

? ? ? ? if __name__ == "__main__":

? ? ? ? ? ? ? ? func1(參數(shù))

? ? 這樣就可以把模塊以腳本的方式來執(zhí)行,在這種情況下,import demo是不會執(zhí)行該腳本的


3. 模塊的搜索路徑

? ? 當(dāng)一個模塊(如 demo)被導(dǎo)入的時候,解釋器先會在內(nèi)置模塊中搜索該模塊,如果沒有找到就會從sys.path 定義的目錄列表中去搜索(包括 腳本目錄, pythonpath, 以及安裝時的默認(rèn)設(shè)置)


4. 模塊的編譯

? ? 為了加速python文件的載入速度,每個py文件編譯后的版本會放置在一個名為__pycache__的緩存目錄中,編譯后的模塊的文件名是 module.version.pyc

? ? 編譯后的模塊可以在各平臺上運行

? ? python在兩種情況下不會檢查編譯緩存:(1)命令行直接導(dǎo)入的代碼(2)沒有源文件,無源文件的發(fā)行版

? ? 編譯后的模塊并不比未編譯的讀取速度更快,影響的只是文件的加載速度


5. 標(biāo)準(zhǔn)模塊

? ? python有自己的標(biāo)準(zhǔn)模塊庫,以提高執(zhí)行效率,有些模塊取決于平臺,如winreg模塊就只在windows平臺上提供,sys 模塊嵌入到每一個解釋器中,sys.ps1 和 sys.ps2 分別定義了初級和次級提示字符,默認(rèn)為 >>> 和 ... , sys.path 定義了模塊的搜索路徑。


6. dir() 函數(shù)

? ? 列出模塊所有定義的名稱,返回一個排序后的字符串列表,如:

?????????dir(demo),?

????????返回 [ '__name__', 'func1', 'func2' ]

? ? 如果 dir() 函數(shù)沒有傳遞參數(shù),就會返回當(dāng)前所有定義的名稱

? ? import builtins

? ? dir(buildtins) 會返回python內(nèi)置的函數(shù)和變量名

? ??

7. 包 (package)

? ? 包是python中一種構(gòu)造模塊命名空間的方法,通過包名.模塊名來調(diào)用模塊,這樣做的好處是使不同模塊的作者不用擔(dān)心模塊名稱一樣,導(dǎo)入方法和上述導(dǎo)入模塊的方法類似

? ? 當(dāng)一個包下還有子包時, 子包之間可通過絕對路徑來導(dǎo)入,也可通過相對路徑來導(dǎo)入兄弟包中的函數(shù)等



? ??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 模塊和包 一 模塊 1 什么是模塊? 常見的場景:一個模塊就是一個包含了python定義和聲明的文件,文件名就是...
    go以恒閱讀 2,348評論 0 4
  • 一、模塊 1、模塊和導(dǎo)入 當(dāng)程序代碼量變得相當(dāng)大、邏輯結(jié)構(gòu)變得非常復(fù)雜的時候,我們最好把代碼按照邏輯和功能劃分成一...
    常大鵬閱讀 3,273評論 0 9
  • 1. 認(rèn)識模塊 1.1 什么是模塊 一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.p...
    hswangxun閱讀 699評論 0 1
  • 年輕的時候,我們總是要通過一些事,一些人才能理解自己當(dāng)初所不能理解的事。 要想收獲必須先付出,努力增加收獲的機(jī)會。...
    HY_f37e閱讀 428評論 0 1
  • 兒子,今天爸爸說的話題有點哲學(xué)意味,你也許一下不能明白,但這確實最最高屋建瓴的,你只有開始對其懵懵懂懂,然后去實踐...
    丁曉磊閱讀 828評論 0 1

友情鏈接更多精彩內(nèi)容