亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中__init__.py文件的作用

 更新時間:2022年09月23日 15:00:03   作者:偶爾躺平的咸魚  
這篇文章主要介紹了Python中__init__.py文件的作用,在PyCharm中,帶有__init__.py這個文件的目錄被認為是Python的包目錄,與普通目錄的圖標有不一樣的顯示

1 init文件夾圖標

在PyCharm中,帶有__init__.py這個文件的目錄被認為是Python的包目錄,與普通目錄的圖標有不一樣的顯示。
如下圖所示,data目錄沒有__init__.py,其圖標是個文件夾圖標;而model下有_init__.py文件,其圖標是一個包。所以__init__.py是Python中package的標識

2 init.py導入包方式

__init__.py文件的一個主要作用是將文件夾變?yōu)橐粋€Python模塊,Python中的每個模塊的包中,都有__init__.py 文件。

python在解釋包的時候會給本模塊下的所有文件建立一個索引放在當前路徑下的__init__.py文件中,如果沒有文件索引,即使import了指定的包,解釋器還是找不到這個模塊下的文件。如果一個文件夾下沒有__init__.py文件,不會被當做一個模塊。

2.1 單個導入

# package
# __init__.py
import re
import urllib
import sys
import os
# a.py
import package 
print(package.re, package.urllib, package.sys, package.os)

注意這里訪問__init__.py文件中的引用文件,需要加上包名。

2.2 批量引入(定義__all__用來模糊導入)

我們在python中導入一個包時,實際上是導入了它的__init__.py文件,這樣我們可以在__init__.py文件中批量導入我們所需要的模塊,而不再需要一個一個的導入。

使用__init__.py中的重要變量__all__, 將模塊全部導入。

# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']
# a.py
from package import *

這就會將注冊在__init__.py文件中__all__列表中的模塊和包導入到當前文件中來。

3 實例

假設(shè)我們的模塊包的目錄結(jié)構(gòu)如下:

- mypackage
- - subpackage_1
- - - test11.py
- - - test12.py
- - subpackage_2
- - - test21.py
- - - test22.py
- - subpackage_3
- - - test31.py
- - - test32.py

直接導入:

如果我們使用最直接的導入方式,將整個文件拷貝到工程目錄下,然后直接導入:

from mypackage.subpackage_1 import test11
from mypackage.subpackage_1 import test12
from mypackage.subpackage_2 import test21
from mypackage.subpackage_2 import test22
from mypackage.subpackage_3 import test31
from mypackage.subpackage_3 import test32

這樣的話,查找的時候也會麻煩,此時__init__.py就起到了簡化的作用。

init.py導入:

在mypackage/添加__init__.py程序,有三種寫入方式。

from mypackage.subpackage_1 import test11
from mypackage import *
from mypackage.subpackage_1 import *

4 其他常見問題

4.1 使用__init__.py文件的優(yōu)點

  • ①當目錄下包含這個文件時,Python會將其當作成包目錄,進而可以使用import xx.xx的方式導入目錄下的文件或者模塊。
  • ②使用__init__.py文件可以控制模塊導入時的變量和內(nèi)容,便于編程者的控制。(簡化作用)

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

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

4.3 根據(jù)導入模塊和主程序不同import方式

(1)如果導入的模塊和主程序在同個目錄下,直接import就行了

(2)如果導入的模塊是在主程序所在目錄的子目錄下,可以在子目錄中增加一個空白的__init__.py文件,該文件使得python解釋器將子目錄整個也當成一個模塊,然后直接通過“import 子目錄.模塊”導入即可。

(3)如果導入的模塊是在主程序所在目錄的父目錄下,則要通過修改path來解決,有兩種方法:
①通過sys.path.append

import sys
sys.path.append('父目錄的路徑')  # '需要引用模塊的地址'

來改變。python解釋器就是通過sys.path去的尋找模塊的。sys.path是一個列表 list ,它里面包含了已經(jīng)添加到系統(tǒng)的環(huán)境變量路徑。

【注意】:這種方法是運行時修改,腳本運行后就會失效。

②直接修改環(huán)境變量:在windows中是 “ set 變量=‘路徑’ ” 例如:set PYTHONPATH=‘C:\test…’ 查看是否設(shè)置成功用echo %PYTHONPATH%,而且進到python解釋器中查看sys.path,會發(fā)現(xiàn)已經(jīng)有了新增加的路徑了。這 種方式是永久的,一次設(shè)置以后一直都有效。在linux中是 “export 變量=‘路徑’ “,查看是” echo $變量 "

到此這篇關(guān)于Python中__init__.py文件的作用的文章就介紹到這了,更多相關(guān)Python__init__.py文件 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pycharm最新免費激活碼至2099年(21.3.18親測可用)

    pycharm最新免費激活碼至2099年(21.3.18親測可用)

    這篇文章主要介紹了pycharm最新的激活碼及激活碼的使用方法,幫助大家更好的利用pycharm學習python,感興趣的朋友可以了解下。
    2021-03-03
  • Python中使用Chaco繪圖庫

    Python中使用Chaco繪圖庫

    這篇文章主要介紹了Python中使用Chaco繪圖庫,Chaco是一個2D的繪圖庫,如果你安裝了Python(x,y)的話,可以在pythonxy的安裝目錄下的找到Chaco的demo程序,Chaco提供了類似Matlab和pylab的繪圖方式,我們稱之為面向腳本的繪圖方式
    2023-11-11
  • 詳解如何通過Python制作一個密碼生成器

    詳解如何通過Python制作一個密碼生成器

    定期更換密碼是一種非常重要的安全措施,這種做法可以有效地保護你的賬戶和個人信息不受黑客和網(wǎng)絡(luò)攻擊者的侵害。所以本文就來用Python制作一個密碼生成器吧
    2023-05-05
  • python 拼接文件路徑的方法

    python 拼接文件路徑的方法

    今天小編就為大家分享一篇python 拼接文件路徑的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 如何在VSCode下使用Jupyter的教程詳解

    如何在VSCode下使用Jupyter的教程詳解

    這篇文章主要介紹了如何在VSCode下使用Jupyter,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Python可變和不可變、類的私有屬性實例分析

    Python可變和不可變、類的私有屬性實例分析

    這篇文章主要介紹了Python可變和不可變、類的私有屬性,結(jié)合實例形式分析了Python值可變與不可變的情況及內(nèi)存地址變化,類的私有屬性定義、訪問相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • python獲取代理IP的實例分享

    python獲取代理IP的實例分享

    今天小編就為大家分享一篇python獲取代理IP的實例分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python常用的各種排序算法原理與實現(xiàn)方法小結(jié)

    python常用的各種排序算法原理與實現(xiàn)方法小結(jié)

    這篇文章主要介紹了python常用的各種排序算法原理與實現(xiàn)方法,結(jié)合實例形式總結(jié)分析了冒泡排序、插入排序、選擇排序、快速排序等排序算法的相關(guān)原理與實現(xiàn)方法,需要的朋友可以參考下
    2023-04-04
  • Djanog admin 顯示圖片及觸發(fā)器講解

    Djanog admin 顯示圖片及觸發(fā)器講解

    這篇文章主要為大家介紹了Djanog admin 顯示圖片及觸發(fā)器講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Python3控制路由器——使用requests重啟極路由.py

    Python3控制路由器——使用requests重啟極路由.py

    通過本文給大家介紹Python3控制路由器——使用requests重啟極路由.py的相關(guān)知識,代碼寫了相應(yīng)的注釋,以后再寫成可以方便調(diào)用的模塊,感興趣的朋友一起學習吧
    2016-05-05

最新評論