最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python包中__init__.py文件的作用與用法實例詳解

 更新時間:2022年06月27日 16:33:40   作者:Kwoky  
我們新建python包時常常會看到一個__init _.py文件,下面這篇文章主要給大家介紹了關于Python包中__init__.py文件的作用與用法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

前言

在Python工程中,我們經??梢钥吹綆в?ldquo;__init__.py”文件的目錄,在PyCharm中,帶有這個文件的目錄被認為是Python的包目錄,與目錄的圖標有不一樣的顯示。如下圖所示, dir_example是一個空白目錄,圖標是個文件夾圖標,而init_example下有_init__.py文件,其圖標是一個包。

那么這個文件的作用是什么,我們平時如何使用呢?

一、__init__.py文件簡介

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

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

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

綜上所述,__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文件中定義變量或者邏輯將在導入時候被執(zhí)行

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

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 *

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

Hey, I am a __init__.py file

因為在from a_pkg import *時候,會首先執(zhí)行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文件用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python模糊圖片過濾的方法

    python模糊圖片過濾的方法

    今天小編就為大家分享一篇python模糊圖片過濾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python基于xlutils修改表格內容過程解析

    Python基于xlutils修改表格內容過程解析

    這篇文章主要介紹了Python基于xlutils修改表格內容過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 解決Django連接db遇到的問題

    解決Django連接db遇到的問題

    今天小編大家分享一篇解決Django連接db遇到的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python中py文件與pyc文件相互轉換的方法實例

    python中py文件與pyc文件相互轉換的方法實例

    pyc是一種二進制文件,是由py文件經過編譯后,生成的文件,下面這篇文章主要給大家介紹了關于python中py文件與pyc文件相互轉換的相關資料,需要的朋友可以參考下
    2022-05-05
  • python中的getter與setter你了解嗎

    python中的getter與setter你了解嗎

    這篇文章主要為大家詳細介紹了python中的getter與setter,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 發(fā)布你的Python模塊詳解

    發(fā)布你的Python模塊詳解

    這篇文章主要介紹了發(fā)布你的Python模塊詳解的相關資料,需要的朋友可以參考下
    2016-09-09
  • Python的scikit-image模塊實例講解

    Python的scikit-image模塊實例講解

    在本篇文章里小編給大家整理了一篇關于Python的scikit-image模塊實例講解內容,有需要的朋友們可以學習下。
    2020-12-12
  • 最新解決沒有NVSMI文件夾以及nvidia-smi‘?不是內部或外部命令也不是可運行的程序或批處理文件

    最新解決沒有NVSMI文件夾以及nvidia-smi‘?不是內部或外部命令也不是可運行的程序或批處理文件

    這篇文章主要介紹了解決沒有NVSMI文件夾以及nvidia-smi‘?不是內部或外部命令也不是可運行的程序或批處理文件,本文通過兩種問題分析給大家分享解決方法,需要的朋友可以參考下
    2023-01-01
  • Python中json庫的操作指南

    Python中json庫的操作指南

    JSON是存儲和交換文本信息的語法,類似XML,JSON比XML更小、更快,更易解析,且易于人閱讀和編寫,下面這篇文章主要給大家介紹了關于Python中json庫的操作指南,需要的朋友可以參考下
    2023-04-04
  • 詳細介紹Python進度條tqdm的使用

    詳細介紹Python進度條tqdm的使用

    這篇文章主要介紹了詳細介紹Python進度條tqdm的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論

呼玛县| 昭苏县| 桑日县| 册亨县| 新河县| 湾仔区| 邓州市| 昭苏县| 延庆县| 青川县| 宜城市| 讷河市| 彰化县| 罗山县| 沈阳市| 房产| 江源县| 西城区| 满洲里市| 西乌| 青岛市| 兰坪| 扶沟县| 怀来县| 神农架林区| 亳州市| 陕西省| 天全县| 太仆寺旗| 长寿区| 岳普湖县| 广丰县| 普宁市| 繁峙县| 桂阳县| 墨竹工卡县| 吴忠市| 利川市| 莫力| 永和县| 萍乡市|