Python包中__init__.py做用

在建立python包的過程當中,IDE都會在包根目錄下建立一個__init__.py文件,該Python文件默認是空的.目錄結構以下:python

Pycharm下的package樹結構:測試

在Finder中的目錄結構:spa

從Finder中的目錄就能夠看出來,每一個package其實是一個目錄(Directory),那麼IDE是怎麼識別它爲package呢?沒錯,__init__.py的第一個做用就是package的標識,若是沒有該文件,該目錄就不會認爲是package。code

Python中的包和模塊有兩種導入方式:精確導入和模糊導入:blog

精確導入:it

from Root.Pack1 import Pack1Class

import Root.Pack1.Pack1Class

模糊導入:class

from Root.Pack1 import *

模糊導入中的*中的模塊是由__all__來定義的,__init__.py的另一個做用就是定義package中的__all__,用來模糊導入,如__init__.py:test

__all__ = ["Pack1Class","Pack1Class1"]

在包外部調用:import

from Root.Pack1 import *

a = Pack1Class.Pack1_AA("Alvin")

a.PrintName()

__init__.py首先是一個python文件,全部還能夠用來寫python模塊,可是不建議這麼寫,儘可能保證__init__.py足夠輕:im

__init__.py:

複製代碼
__all__ = ["Pack1Class","Pack1Class1","Init_AA"]

class Init_AA:
    def __init__(self,name):
        self.name = name

    def Greeting(self):
        print("Hello ",self.name)
複製代碼

在測試中調用:

from Root.Pack1 import *

b = Init_AA("test")

b.Greeting()

總結:

從上邊的例子能夠看出,__init__.py的主要做用是:

1. Python中package的標識,不能刪除

2. 定義__all__用來模糊導入

3. 編寫Python代碼(不建議在__init__中寫python模塊,能夠在包中在建立另外的模塊來寫,儘可能保證__init__.py簡單)

相關文章
相關標籤/搜索