課程內(nèi)容
Python入門課程N(yùn)O76課 模塊的導(dǎo)入機(jī)制
上節(jié)課講到import可以進(jìn)行模塊的導(dǎo)入操作,通過improt導(dǎo)入后Python解釋器會(huì)自動(dòng)將導(dǎo)入的模塊名寫入到內(nèi)置模塊sys的modules屬性中。 sys.modules是一個(gè)字典對(duì)象,鍵名為模塊名。
模塊導(dǎo)入成功以后,Python會(huì)在sys.modules中進(jìn)行記錄。在導(dǎo)入的過程中,會(huì)首先在sys.modules中進(jìn)行查找,如果查找失敗,按"就近原則",會(huì)首先在當(dāng)前目錄進(jìn)行查找,查找是否有同名的模塊腳本,如果又查找失敗,Python解釋器接下來會(huì)去環(huán)境變量PYTHONPATH中進(jìn)行查找,最后再去Python的系統(tǒng)目錄中進(jìn)行查找。如果查找成功,Python解釋器會(huì)對(duì)模塊進(jìn)行編譯,將其轉(zhuǎn)譯成字節(jié)碼。
Python是一種解釋型語言,解釋性語言與C/C++等編譯型語言的一個(gè)很重要的區(qū)別在于,Python解釋器會(huì)先將Python程序轉(zhuǎn)譯成中間代碼,這里的中間代碼是Python字節(jié)碼。Python將模塊轉(zhuǎn)譯成Python字節(jié)碼以后,將字節(jié)碼載入到內(nèi)存中,在內(nèi)存中對(duì)字節(jié)碼逐條地解釋執(zhí)行。
程序運(yùn)行結(jié)束以后,在windows系統(tǒng)中會(huì)在模塊的目錄下生成一個(gè)__pycache__的目錄,目錄下面的pyc文件即為python字節(jié)碼。在Linux系統(tǒng)中會(huì)直接在模塊的目錄中生成pyc文件。如果未對(duì)模塊進(jìn)行修改,Python下次進(jìn)行模塊導(dǎo)入時(shí),會(huì)直接使用字節(jié)碼文件,這樣就提升了程序的執(zhí)行效率。

- 上一篇
Python入門課程N(yùn)O75課 什么是模塊
一個(gè)腳本就是一個(gè)模塊,在之前的課程中我們知道在腳本程序中定義的函數(shù),可以在下文中被調(diào)用,同樣,它也可以在其他腳本程序中調(diào)用,其實(shí),在上節(jié)課我們已經(jīng)使用了 import 進(jìn)行模塊的導(dǎo)入。import語句:將常用的功能分離到一個(gè)模塊中,然后在其它模塊中進(jìn)行復(fù)用,這是模塊的一
- 下一篇
Python入門課程N(yùn)O77課 package是什么
package,即通常所說的包結(jié)構(gòu),是一種包裹模塊文件的目錄結(jié)構(gòu)。通俗地來進(jìn)行解釋,package是一個(gè)模塊倉(cāng)庫(kù)??梢酝ㄋ椎睦斫鉃橐粋€(gè)目錄文件夾就是一個(gè)package,比如下圖中的Lib和pip都是package。package也是對(duì)象,可以理解為一種命名空間對(duì)象。Python中的類有一個(gè)特殊的__init