python基礎之包的匯入和__init__.py的介紹,python__init__.py

來源:互聯網
上載者:User

python基礎之包的匯入和__init__.py的介紹,python__init__.py

調用同級目錄:

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

若在程式test.py中匯入模組mod, 則直接使用

import mod或from mod import *

調用子目錄下的模組:

– src |– mod.py |– lib | |– mod2.py |– test.pyfrom lib.mod2 import *或import lib.mod2

調用上級目錄下的檔案

目錄結構如下:

– src |– mod.py |– lib | |– mod2.py |– sub | |– test2.pyimport syssys.path.append('C:\\test\\A\\C')import modimport 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簡單)

總結

以上所述是小編給大家介紹的python基礎之包的匯入和__init__.py的介紹,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對幫客之家網站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.