深入理解Python中__init__.py文件
1. 簡(jiǎn)介
1.1 模塊(Module)和包(Package)的概念
模塊是程序,任何Python程序都可以作為模塊導(dǎo)入。寫在腳本.py
文件中的函數(shù),比如xx.py
,可以在另一個(gè)模塊或者腳本中通過import xx
進(jìn)行導(dǎo)入。如果要導(dǎo)入xx.py
中的函數(shù)yy
,就寫成from xx import yy
??梢娔K可以簡(jiǎn)單的理解為一個(gè).py
文件。
包就是模塊所在的目錄。和文件夾不同的是,包的根目錄下存在__init__.py
。一個(gè)文件夾根目錄下存在__init__.py
那就會(huì)認(rèn)為該文件夾是Python包,否則那這個(gè)文件夾就是一個(gè)普通的文件夾。
1.2 __init__.py文件簡(jiǎn)介
__init__.py
文件的作用是將文件夾變?yōu)橐粋€(gè)Python的包,Python中每個(gè)包中,都有__init__.py
文件。通常__init__.py
文件為空,但是我們還可以為它增加其他的功能。我們?cè)趯?dǎo)入一個(gè)包時(shí),實(shí)際上是導(dǎo)入了它的__init__.py
文件。這樣我們可以在__init__.py
文件中批量導(dǎo)入我們所需要的模塊,而不再需要一個(gè)一個(gè)的導(dǎo)入。
2. __init__.py內(nèi)容寫法
2.1 __init__.py文件內(nèi)容
以PySolid代碼為例。PySolid包的目錄結(jié)構(gòu)如下:
. ├── grid.py ├── point.py └── __init__.py
__init__.py
內(nèi)容:
# 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內(nèi)容解釋
從grid.py中導(dǎo)入兩個(gè)函數(shù):
calc_solid_earth_tides_grid plot_solid_earth_tides_grid
從point.py中導(dǎo)入四個(gè)函數(shù):
TIDES, calc_solid_earth_tides_point plot_solid_earth_tides_point plot_power_spectral_density4tides
在__init__.py
中通過定義__all__
變量來控制外部調(diào)用者能夠調(diào)用的范圍,除了以下列表中的函數(shù),其它函數(shù)都無(wú)法被使用,類似于私有函數(shù)或變量。
__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', ]
到此這篇關(guān)于深入理解Python中__init__.py文件的文章就介紹到這了,更多相關(guān)Python中__init__.py內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 實(shí)現(xiàn)兩個(gè)npy檔案合并
這篇文章主要介紹了python 實(shí)現(xiàn)兩個(gè)npy檔案合并,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python稀疏矩陣及參數(shù)保存代碼實(shí)現(xiàn)
這篇文章主要介紹了Python稀疏矩陣及參數(shù)保存代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04cookies應(yīng)對(duì)python反爬蟲知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理關(guān)于cookies應(yīng)對(duì)python反爬蟲知識(shí)點(diǎn)詳解,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11SymPy庫(kù)關(guān)于矩陣的基本操作和運(yùn)算
本文主要介紹了SymPy庫(kù)關(guān)于矩陣的基本操作和運(yùn)算,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03NumPy中np.random.rand函數(shù)的實(shí)現(xiàn)
np.random.rand是NumPy庫(kù)中的一個(gè)函數(shù),用于生成隨機(jī)數(shù),本文主要介紹了NumPy中np.random.rand函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析
這篇文章主要介紹了Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析,結(jié)合實(shí)例形式分析了Python浮點(diǎn)數(shù)操作的常見錯(cuò)誤,并簡(jiǎn)單解釋了浮點(diǎn)數(shù)運(yùn)算的原理與比較運(yùn)算實(shí)現(xiàn)方法,需要的朋友可以參考下2017-10-10OpenCV-Python實(shí)現(xiàn)輪廓的特征值
輪廓自身的一些屬性特征及輪廓所包圍對(duì)象的特征對(duì)于描述圖像具有重要意義。本篇博文將介紹幾個(gè)輪廓自身的屬性特征及輪廓包圍對(duì)象的特征,感興趣的可以了解一下2021-06-06