python基礎===包的導入和__init__.py的介紹


調用同級目錄:

– src
|– mod.py
|– test.py

若在程序test.py中導入模塊mod, 則直接使用

import mod

from mod import *

調用子目錄下的模塊:

– src
|– mod.py
|– lib
| |– mod2.py
|– test.py

from lib.mod2 import *

import lib.mod2

調用上級目錄下的文件

目錄結構如下:

– 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模塊的每一個包中,都有一個__init__.py文件(這個文件定義了包的屬性和方法)然后是一些模塊文件和子目錄,假如子目錄中也有__init__.py 那么它就是這個包的子包了。當你將一個包作為模塊導入(比如從 xml 導入 dom )的時候,實際上導入了它的__init__.py 文件。

一個包是一個帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實它可以什么也不定義;可以只是一個空文件,但是必須存在。如果 __init__.py 不存在,這個目錄就僅僅是一個目錄,而不是一個包,它就不能被導入或者包含其它的模塊和嵌套包。

__init__.py 中還有一個重要的變量,叫做__all__。

如果此時目錄如下

– src
|– mod.py
|– lib
| |– mod2.py
| |– mod3.py
| |– sub
| |– | |– mod3.py

我們有時會使出一招“全部導入”,也就是這樣:

from lib import *

這時 import 就會把注冊在包__init__.py 文件中 __all__ 列表中的子模塊和子包導入到當前作用域中來。比如:

#文件__init__.py

 

__all__ = ["mod2", "mod3", "sub"]

 

總結:

對於其余路徑下載py文件,要想導入,先加到sys.path中,然后再導入。

__init__.py的作用:

  • package的標識,不能刪除
  • 定義package中的__all__,用來模糊導入
  • 編寫Python代碼(不建議在__init__中寫python模塊,可以在包中在創建另外的模塊來寫,盡量保證__init__.py簡單)

 

 


 

順便提一下

如果有任何問題,你可以在這里找到我 ,軟件測試交流qq群,209092584

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM