首頁 > 軟體

深入理解Python中__init__.py檔案

2023-02-10 06:01:00

1. 簡介

1.1 模組(Module)和包(Package)的概念

模組是程式,任何Python程式都可以作為模組匯入。寫在指令碼.py檔案中的函數,比如xx.py,可以在另一個模組或者指令碼中通過import xx進行匯入。如果要匯入xx.py中的函數yy,就寫成from xx import yy。可見模組可以簡單的理解為一個.py檔案。

包就是模組所在的目錄。和資料夾不同的是,包的根目錄下存在__init__.py。一個資料夾根目錄下存在__init__.py那就會認為該資料夾是Python包,否則那這個資料夾就是一個普通的資料夾。

1.2 __init__.py檔案簡介

__init__.py檔案的作用是將資料夾變為一個Python的包,Python中每個包中,都有__init__.py檔案。通常__init__.py檔案為空,但是我們還可以為它增加其他的功能。我們在匯入一個包時,實際上是匯入了它的__init__.py檔案。這樣我們可以在__init__.py檔案中批次匯入我們所需要的模組,而不再需要一個一個的匯入。

2. __init__.py內容寫法

2.1 __init__.py檔案內容

以PySolid程式碼為例。PySolid包的目錄結構如下:

.
├── grid.py
├── point.py
└── __init__.py

__init__.py內容:

# top-level functions
from pysolid.grid import (
    calc_solid_earth_tides_grid,
    plot_solid_earth_tides_grid,
)
from pysolid.point import (
    TIDES,
    calc_solid_earth_tides_point,
    plot_solid_earth_tides_point,
    plot_power_spectral_density4tides,
)

__all__ = [
    '__version__',
    'calc_solid_earth_tides_grid',
    'plot_solid_earth_tides_grid',
    'TIDES',
    'calc_solid_earth_tides_point',
    'plot_solid_earth_tides_point',
    'plot_power_spectral_density4tides',
]

2.2 __init__.py內容解釋

從grid.py中匯入兩個函數:

 calc_solid_earth_tides_grid
 plot_solid_earth_tides_grid

從point.py中匯入四個函數:

TIDES,
calc_solid_earth_tides_point
plot_solid_earth_tides_point
plot_power_spectral_density4tides

__init__.py中通過定義__all__變數來控制外部呼叫者能夠呼叫的範圍,除了以下列表中的函數,其它函數都無法被使用,類似於私有函數或變數。

__all__ = [
    '__version__',
    'calc_solid_earth_tides_grid',
    'plot_solid_earth_tides_grid',
    'TIDES',
    'calc_solid_earth_tides_point',
    'plot_solid_earth_tides_point',
    'plot_power_spectral_density4tides',
]

到此這篇關於深入理解Python中__init__.py檔案的文章就介紹到這了,更多相關Python中__init__.py內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com