Python包中__init__.py作用

2022-01-24 光榮之路


吳老的《selenium webdriver 實戰寶典》出版了!

作者:徐文

來源:http://www.cnblogs.com/AlwinXu/p/5598543.html

在創建python包的過程中,IDE都會在包根目錄下創建一個__init__.py文件,該Python文件默認是空的.目錄結構如下:

Pycharm下的package樹結構:

在Finder中的目錄結構:

從Finder中的目錄就可以看出來,每個package實際上是一個目錄(Directory),那麼IDE是怎麼識別它為package呢?沒錯,__init__.py的第一個作用就是package的標識,如果沒有該文件,該目錄就不會認為是package。

Python中的包和模塊有兩種導入方式:精確導入和模糊導入:

精確導入:

from Root.Pack1 import Pack1Classimport Root.Pack1.Pack1Class

模糊導入:

from Root.Pack1 import *

模糊導入中的*中的模塊是由__all__來定義的,__init__.py的另外一個作用就是定義package中的__all__,用來模糊導入,如__init__.py:

__all__ = ["Pack1Class","Pack1Class1"]

在包外部調用:

from Root.Pack1 import *a = Pack1Class.Pack1_AA("Alvin")a.PrintName()

__init__.py首先是一個python文件,所有還可以用來寫python模塊,但是不建議這麼寫,儘量保證__init__.py足夠輕:

__init__.py:

__all__ = ["Pack1Class","Pack1Class1","Init_AA"]
class Init_AA:
  def __init__(self,name):        self.name = name
  def Greeting(self):
       print("Hello ",self.name)

在測試中調用:

from Root.Pack1 import *b = Init_AA("test")b.Greeting()

總結:

從上邊的例子可以看出,__init__.py的主要作用是:

1. Python中package的標識,不能刪除

2. 定義__all__用來模糊導入

3. 編寫Python代碼(不建議在__init__中寫python模塊,可以在包中在創建另外的模塊來寫,儘量保證__init__.py簡單)

聲明:授權轉載,如需轉載請聯繫原作者!

公益傳播測試知識、技能與正能量!感謝作者!
分享測試生活,思考測試人生!歡迎投稿!
文章圖片來自網絡,如有侵權請見諒,請聯繫我們妥善處理。
735821166@qq.com

官網:www.gloryroad.cn
微信公眾號:gloryroadtrain
性能測試QQ群:415987441
測試招聘QQ群: 203715128
Java2群:569534627
Python群:457561756
諮詢V信:mengqiao626
諮詢QQ:53617154

相關焦點

  • Python中__init__.py文件的作用詳解
    __init__.py 文件的作用是將文件夾變為一個Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件。
  • Python小知識: __init__.py的作用
    __init__.py 文件的作用是將文件夾變為一個Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件。通常__init__.py 文件為空,但是我們還可以為它增加其他的功能。我們在導入一個包時,實際上是導入了它的__init__.py文件。這樣我們可以在__init__.py文件中批量導入我們所需要的模塊,而不再需要一個一個的導入。
  • Python雜談: __init__.py的作用
    轉載信息如下:  我們經常在python的模塊目錄中會看到 "__init__.py"
  • __init__.py 文件的作用
    而我們自己定義的.py文件,python中稱為模塊(module),一個模塊就是一個py文件,裡面封裝了一個功能模塊,可能有函數、類、變量等。每個package裡都有一個__init__.py文件。使用這種結構帶來什麼便利?每個模塊間的變量又該如何引用?裡面的__init__.py起到什麼作用?下面一一解答。__init__.py 作用如上所述,__init__.py會使得普通的文件夾變為package.
  • Python: __init__.py 作用
    以下目錄結構為示例:├─test │ ├─package_1│ │ ├─__init__.py │ │ ├─m1.py │ ├─package_2 │ │ ├─__init__.py │ │ └─m2.py│ ├─test.py
  • Stata+Python-3:Stata中下載安裝Python包
    Python包在我的上一篇文章中,我向您展示了在Stata中使用Python的三種方法。現在,您可以在Stata中編寫自己的Python程序。但是Python的真正強大之處在於成千上萬的免費軟體包。今天,我想向您展示如何下載和安裝Python包。1、使用pip安裝Python包讓我們 先輸入python query來驗證是否在我們的系統上安裝了python,以及Stata是否設置為使用python。
  • Python學習筆記:模塊和包
    什麼是包為了更好地管理多個模塊源文件,python提供了包的概念。那麼什麼是包呢?包的作用是包含多個模塊,但包的本質依然是模塊,包可用於包含包。從上面的輸出結果可以看出,在導入first_package包時,程序執行了該包所對應的文件夾下的init__.py;從倒數第二行輸出可以看到,包的本質就是模塊;從最後一行輸出可以看到,使用"import first_package"導入包的本質就是加載並執行該包下的_init_.py文件,然後將整個文件內容賦值給與包同名的變量,該變量的類型是module。
  • Python 中的黑暗角落(三):模塊與包
    事實上,從運行的角度,裝載 .pyc 並不比裝載 .py 文件更快。此處的加速,僅只在裝載模塊的過程中起作用。因此 .pyc 中的 C 更多地可以理解為 cache。包包(package)是 Python 中對模塊的更高一級的抽象。簡單來說,Python 允許用戶把目錄當成模塊看待。這樣一來,目錄中的不同模塊文件,就變成了「包」裡面的子模塊。
  • Python中模塊(Module)和包(Package)到底是什麼,有什麼區別?
    方法是選擇一個頂層包名,比如mycompany,按照如下目錄存放mycompany├─ __init__.py├─ abc.py└─ xyz.py引入了包以後,只要頂層的包名不與別人衝突,那所有模塊都不會與別人衝突。
  • 如何簡單地理解 Python 中的 if __name__ == '__main__'
    假設我們有一個包 a,包的結構如下:a├── b│   ├── c.py│   └── __init__.py└── __init__.py在包 a 中,文件c.py,__init__.py,__init__.py的內容都為:當一個 .py 文件(模塊)被其他.py文件(模塊)導入時,我們在命令行執行輸出結果
  • 你經常看到卻經常忽視的__init__.py有什麼用?
    這個時候,我們可以在microsoft文件夾下面創建一個__init__.py文件,並在裡面填寫如下內容:這是因為,當一個文件夾裡面有__init__.py以後,這個文件夾就會被 Python 作為一個包(package)來處理。此時,對於這個包裡面層級比較深的函數、常量、類,我們可以先把它們導入到__init__.py中。這樣以來,包外面再想導入這些內容時,就可以用from 包名 import 函數名來導入了。
  • python中的模塊、庫、包有什麼區別?
    (1)當模塊作為腳本被直接運行的時候,__name__變量的值為"__main__";(2)當模塊被其他腳本import調用時,該變量為模塊文件名,也即__name__=="calc_distance";一般我們編寫一個模塊時,都會進行一些測試,會大量輸出的測試信息,而當模塊被別的腳本調用執行時,這些測試信息輸出是累贅的。
  • 深入理解Python中import機制
    概念模塊(module)任何.py文件都可以稱為模塊包(package)可以將多個模塊放入一個包中,就像電腦中的文件夾,但與文件夾的區別是,package包含__init__.py文件Python import 的搜索路徑當我們執行python xx.py時,python是如何幫我們正確定位包所在的目錄呢?
  • Python黑帽編程1.3 Python運行時與包管理工具
    Network Hacks Attack and Defense with Python》一書,為了解決很多同學對英文書的恐懼,解決看書之後實戰過程中遇到的問題而作。  MANIFEST.in  nmap.html  README.txt        setup.pyexample.py  Makefile     nmap         PKG-INFO   requirements.txtroot@kali:~/python-nmap-0.6.0#
  • Python 項目管理與構建工具:CookieCutter, PyScaffold, PyBuilder, Poetry
    回到 Python,產生過 pip, pipenv, conda 那樣的包管理工具,但對項目的目錄布局沒有任何約定。關於構建很多還是延續了傳統的 Makefile 的方式,再就是加上 setup.py 和 build.py 用程序代碼來進行安裝與構建。
  • Stata-Python交互-3:如何安裝Python宏包
    NumPy 包NumPy 為使用 Python 進行科學計算的基本包。並且,Python 許多其他包都依賴於 NumPy 的數學功能。我們可以通過在 Stata 中輸入 python which numpy 來檢查 NumPy 包是否成功安裝。
  • python相對導入常見問題和解決方案
    頂層模塊中不能使用相對導入。相對導入使用模塊的名稱屬性來決定模塊在包層次結構中的位置,相對導入能向上相對多少級,完全取決於模塊名稱中有多少層。TestModule/ ├── __init__.py # 這個文件其實未起作用 ├── main.py # import brother1; print(__name__) ├── brother1.py # from . import brother2; print(__name__)
  • 零基礎學習Python_組織結構和range()函數
    left_with_right    CAPS_WITH_UNDER三.特殊模塊Python中特殊的模塊__init__.py  這個__init__.py就是區別於包和這個文件夾的,只有包含了__init__.py模塊的文件夾才能成為包(否則的話,就是一個文件夾),__init__.py是在模塊導入時運行的。
  • (二)Python中的封裝思想
    在比較大型的項目中常常需要編寫、用到大量的模塊,此時我們可以使用包(Package)來管理這些模塊。簡單來說,Python包就是裡面裝了一個__init__.py文件的文件夾!它具有下面3個性質:(二)什麼是__init__.py文件?
  • Python import 導入上一級模塊
    1.導入同級模塊python導入同級模塊(在同一個文件夾中的py文件)直接導入即可。如在file1.py中想導入dir3下的file3.py,首先要在dir3中新建一個空白的__init__.py文件。