Python模組包中__init__.py檔案的作用

來源:互聯網
上載者:User

標籤:

Package1/ __init__.py    Module1.py    Module2.py    Package2/ __init__.py       Module1.py       Module2.py 

我們可以就這樣匯入一個包: 

from Package1 import Module1

from Package1 import Package2

import Packag1.Module1

import Packag1.Package2 

__init__.py 控制著包的匯入行為。假如 __init__.py 為空白,那麼僅僅匯入包是什麼都做不了的。

>>> import Package1

>>> Package1.Module1

Traceback (most recent call last):

 File "<pyshell#1>", line 1, in ? 

 Package1.Module1AttributeError: ‘module‘ object has no attribute ‘Module1‘ 

我們需要在 __init__.py 裡把 Module1 預先匯入:

#檔案 __init__.py

     import Module1 

>>> import Package1

>>> Package1.Module1

<module ‘Package1.Module1‘ from ‘Module.pyc‘>


__init__.py 中還有一個重要的變數,叫做 __all__。全部匯入

from PackageName import * 
這時 import 就會把註冊在包 __init__.py 檔案中 __all__ 列表中的子模組和子包匯入到當前範圍中來。

比如: 
#檔案 __init__.py

__all__ = [‘Module1‘, ‘Module2‘, ‘Package2‘] 




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.