中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python包中__init__.py文件怎么使用

發布時間:2022-07-02 14:11:40 來源:億速云 閱讀:294 作者:iii 欄目:開發技術

這篇文章主要講解了“Python包中__init__.py文件怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python包中__init__.py文件怎么使用”吧!

一、__init__.py文件簡介

Python 定義了兩種類型的包,常規包和命名空間包。常規包是傳統的包,因為它們存在于 Python 3.2 和更早的版本中。一個常規包通常被實現為一個包含__init__.py 文件的目錄。當一個常規包被導入時,這個__init__.py文件被隱式執行,它所定義的對象被綁定到包的名字空間中。

這是Python官方文檔中對__init__.py文件的描述,其實它的意思很簡單,就是說Python文件都是按照目錄當作不同的模塊來組織的,這個目錄被認為是Python包目錄,Python會通過搜索該目錄下的文件來導入相關的模塊。但是并不是所有的目錄都會被搜索添加,只有當目錄中包含__init__.py文件時,這個目錄才會被Python當作是一個包目錄,進而搜索添加里面的文件。這樣做可以讓編程者自己控制哪些目錄可以被Python導入成包。

當某個目錄中包含__init__.py文件時,Python在引入這個模塊之前,會首先執行這個文件。因此,這個文件也可以被編程者用來控制定義包級別的變量。

綜上所述,__init__.py文件最主要的作用是2個:

當目錄下包含這個文件時,Python會將其當作成包目錄,進而可以使用import xx.xx的方式導入目錄下的文件或者模塊。

使用__init__.py文件可以控制模塊導入時的變量和內容,便于編程者的控制。

下面我們看幾個例子即可。

二、__init__.py文件的使用案例

2.1、沒有__init__.py文件的目錄,使用import xx.xx會報錯嗎?

看版本,在較低的版本中(如3.2及以下),沒有__init__.py文件的目錄不能使用import xx.xx導入相關模塊,但是后面的版本可以。

2.2、在__init__.py文件中定義變量或者邏輯將在導入時候被執行

例如,我們有如下的目錄結構:

init_example/ a_pkg/

                                 __init__.py

                                a.py

                   init_test.py

即init_example工程下有個init_test.py文件和a_pkg目錄,a_pkg目錄下有__init__.py文件和一個a.py文件。

我們在a_pkg目錄下的__init__.py文件定義:

print("Hey, I am a __init__.py file")

那么,如果我們在init_test.py中內容如下:

from a_pkg import *

執行init_test.py我們可以得到如下結果:

Hey, I am a __init__.py file

因為在from a_pkg import *時候,會首先執行a_pkg目錄下的__init__.py文件。

2.3、在__init__.py文件中定義變量或者方法,可以被直接導入使用

還是上面的目錄,假如我們在a_pkg目錄下的a.py定義如下內容:

def a_method():
        print("I am a_pkg!")

在a_pkg目錄下的__init__.py文件定義:

from a_pkg.a import a_method

那么,我們在init_test.py中引入a_pkg可以直接引入a_method方法:

from init_example.a_pkg import a_method a_method()

會打印如下內容:

I am a_pkg!

2.4、在__init__.py文件中使用__all__方法

__all__方法可以在__init__.py文件定義一些包或者變量,可以在使用

from init_example.a_pkg import *

時定義*表達的內容。

例如還是上面的內容,但是我們在a_pkg目錄下的__init__.py文件定義:

__all__ = ["a"]

那么,我們在init_test.py中使用下面的語句可以引入a模塊:

from a_pkg import *
a.a_method()

這時候依然會打印如下內容:

I am a_pkg!

感謝各位的閱讀,以上就是“Python包中__init__.py文件怎么使用”的內容了,經過本文的學習后,相信大家對Python包中__init__.py文件怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁河县| 朝阳区| 侯马市| 崇仁县| 襄垣县| 平湖市| 顺昌县| 桂平市| 南漳县| 巴东县| 余姚市| 漾濞| 兴安县| 五家渠市| 色达县| 绍兴市| 永登县| 阳东县| 阿克苏市| 祁东县| 康马县| 娱乐| 晋城| 武功县| 郯城县| 厦门市| 和平县| 库车县| 勃利县| 磴口县| 阿城市| 嘉黎县| 澄迈县| 沂源县| 鄂尔多斯市| 霍州市| 太康县| 繁峙县| 麻江县| 伊春市| 闽侯县|