您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)python中如何實(shí)現(xiàn)包的導(dǎo)入的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
調(diào)用同級(jí)目錄:
– src |– mod.py |– test.py
若在程序test.py中導(dǎo)入模塊mod, 則直接使用
import mod 或 from mod import *
調(diào)用子目錄下的模塊:
– src |– mod.py |– lib | |– mod2.py |– test.py from lib.mod2 import * 或 import lib.mod2
調(diào)用上級(jí)目錄下的文件
目錄結(jié)構(gòu)如下:
– src |– mod.py |– lib | |– mod2.py |– sub | |– test2.py import sys sys.path.append('C:\\test\\A\\C') import mod import lib.mod2
__init__.py
在python模塊的每一個(gè)包中,都有一個(gè)__init__.py文件(這個(gè)文件定義了包的屬性和方法)然后是一些模塊文件和子目錄,假如子目錄中也有__init__.py 那么它就是這個(gè)包的子包了。當(dāng)你將一個(gè)包作為模塊導(dǎo)入(比如從 xml 導(dǎo)入 dom )的時(shí)候,實(shí)際上導(dǎo)入了它的__init__.py 文件。
一個(gè)包是一個(gè)帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實(shí)它可以什么也不定義;可以只是一個(gè)空文件,但是必須存在。如果 __init__.py 不存在,這個(gè)目錄就僅僅是一個(gè)目錄,而不是一個(gè)包,它就不能被導(dǎo)入或者包含其它的模塊和嵌套包。
__init__.py 中還有一個(gè)重要的變量,叫做__all__。
如果此時(shí)目錄如下
– src |– mod.py |– lib | |– mod2.py | |– mod3.py | |– sub | |– | |– mod3.py
我們有時(shí)會(huì)使出一招“全部導(dǎo)入”,也就是這樣:
from lib import *
這時(shí) import 就會(huì)把注冊在包__init__.py 文件中 __all__ 列表中的子模塊和子包導(dǎo)入到當(dāng)前作用域中來。比如:
#文件__init__.py __all__ = ["mod2", "mod3", "sub"]
總結(jié):
對(duì)于其余路徑下載py文件,要想導(dǎo)入,先加到sys.path中,然后再導(dǎo)入。
__init__.py的作用:
package的標(biāo)識(shí),不能刪除
定義package中的__all__,用來模糊導(dǎo)入
編寫Python代碼(不建議在__init__中寫python模塊,可以在包中在創(chuàng)建另外的模塊來寫,盡量保證__init__.py簡單)
感謝各位的閱讀!關(guān)于“python中如何實(shí)現(xiàn)包的導(dǎo)入”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。