問題:
在Python 3.3 中,是否需要有__init__ 。導入時的py檔案包嗎?
答:
不一定。 Python 3.3 引入了「隱式命名空間包」的概念,允許在沒有 __init__.py 檔案的情況下建立套件。這些被稱為命名空間包,與具有 __init__.py 檔案的常規包相反。
隱式命名空間包用例:
命名空間包是專門使用的當多個庫駐留在不同位置並且需要將子包貢獻給同一個父包時。例如,考慮以下結構:
如果沒有命名空間包,導入「google_pubsub」和「google_storage」都會失敗,因為 Python 將常規包視為獨立實體。透過從「google」和「google/cloud」目錄中刪除 __init__.py 文件,它們將被解釋為命名空間包,從而允許 Python 解釋器查找並向「google」包貢獻模組和子包。
常規套件與命名空間套件:
在大多數情況下,建議透過使用空來堅持使用常規套件__init__.py 檔案。這是因為:
結論:
雖然命名空間包在特定場景中可能有用,但它們應該謹慎使用。對於大多數開發人員和用例,建議使用帶有 __init__.py 檔案的常規套件。僅當確實需要在包含子包的多個目錄之間共享命名空間時才考慮命名空間包。
參考文獻:
以上是Python 3.3 中的套件需要 `__init__.py` 檔案嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!