python基礎:__init__.py文件作用

0 前言

我們在pycharm等IDE中,我們可以選擇新建一個python package或者一個directory。選擇兩種都會新建一個文件夾,不同的是,新建python package會在文件夾下自動創建一個__init__.py文件。那麼這個__init__.py文件有什麼作用呢?本篇文章就來一探究竟。

1 作爲包表示

在IDE中新建python package會在文件夾下自動創建一個__init__.py文件是爲了區分的文件夾和python的package。換句話說__init__.py是作爲python包的標識。在python中module文件來實現的,一個py文件就是一個module。而python的package是用文件夾來實現的,文件夾中添加一個__init__.py就變成了一個module,可以使用import導入。沒有添加__init__.py文件的文件夾不是python的包,如果使用import導入會,找不到包。

2 init.py什麼時候執行

init.py是一個python文件,既然是一個python文件,那就是可以寫入python代碼,可是裏面應該寫什麼樣的代碼呢?
爲了回答這個問題,我們首先要弄明白,這裏的代碼會會在什麼時候執行。
init.py裏的代碼是在模塊導入的時候執行。
module裏的代碼會在導入模塊的時候執行。
知道了__init__.py的執行時機,就可以根據這個特性來發揮它的作用。

3 定義包的方法和屬性

在__init__.py裏可以定一些變量和方法,這些變量和方法是屬於包的。可以直接使用包名.屬性名或者包名.方法名進行調用。(定義在模塊裏屬性和方法,也可以使用模塊名.屬性或者模塊名.方法進行調用)。
可以將一些與環境初始化相關的屬性放在__init__.py文件,這樣在import的時候就會被執行,爲後面程序的執行做好準備。

3 簡化模塊導入

使用import進行模塊導入,如果需要導入的子模塊比較多的話,我們往往會使用import parent *導入parent 下的所有子模塊,來檢查導入操作。這個操作其實是由__init__.py下的__all__支持的。將需要導入的模塊放在__all__構成一個列表,import parent *時就會將__all__裏指定的包全部導入。
注意:在parent 包的內部引用parent的子模塊,也需要寫上帶有parent 的完成模塊路徑

總結

  1. 標識包
  2. 定義包的屬性和方法,用於執行一些初始化操作
  3. 簡化包的導入

參考文章:

  1. python基礎:init.py和__init__函數的作用
  2. Python init.py 作用詳解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章