當前位置:首頁 » 編程語言 » python的initpy

python的initpy

發布時間: 2022-04-13 04:39:21

『壹』 python中含__init__.py 的文件才會被認作是一個包,為什麼呢,這個文件有什麼作用呢

1、__init__.py是Python中package的標識

__init__.py 文件的一個主要作用是將文件夾變為一個Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件

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

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

3、配置模塊的初始化操作,這個文件也是一個正常的python代碼文件,因此可以將初始化代碼放入該文件中。

(1)python的initpy擴展閱讀

python中__init__.py文件的作用實例:

python的每個模塊的包中,都有一個__init__.py文件,有了這個文件,我們才能導入這個目錄下的mole。__init__.py裡面還是可以有內容的,我們在導入一個包時,實際上導入了它的__init__.py文件。
我們可以再__init__.py文件中再導入其他的包,或者模塊。

[python]

import readers

import writers

import commands

import users

import meta

import auth

import admin

這樣,當我們導入這個包的時候,__init__.py文件自動運行。幫我們導入了這么多個模塊,我們就不需要將所有的import語句寫在一個文件里了,也可以減少代碼量。不需要一個個去導入mole了。

『貳』 python腳本下面的 __init__.py 有什麼作用

The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid moles that occur later on the mole search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__variable, described later.

在文件夾中包含一個__init__.py,Python就會把文件夾當作一個package,裡面的py文件就能夠在外面被import了。
例如文件夾結構是:
sound/ Top-level package
__init__.py Initialize the sound package
formats/ Subpackage for file format conversions
__init__.py
wavread.py
wavwrite.py
aiffread.py
aiffwrite.py
auread.py
auwrite.py
...
effects/ Subpackage for sound effects
__init__.py
echo.py
surround.py
reverse.py
...
filters/ Subpackage for filters
__init__.py
equalizer.py
vocoder.py
karaoke.py

外部就可以import sound.effects.echo來使用,sound文件夾和effects文件夾都被處理成package了。

『叄』 python 為什麼 都有個__int__.py

一般python只要是文件夾中就都會帶一個__init__.py 但不強求

這個文件可以說是程序的入口 在外部導入這個包(也就是這個文件夾)的時候 一定要這個文件才能import 不然就會比較麻煩
所以這個包要被別人的調用的時候最好帶上這個__init__.py 不然會讓掉你程序的人頭疼
如果只是自己寫的腳本 其實帶不帶也沒太大影響

『肆』 python中setup.py和_init_.py的作用

_init_.py,是要想讓一個文件夾成為包的必須的文件!這個文件可以為空,但是必須得有!

setup.py,是用來安裝模塊用的,dos命令下!

『伍』 Python中的init.py有什麼作用

你指的應該是是__init__.py文件,以下下詳細解釋:


__init__.py該文件的作用就是相當於把自身整個文件夾當作一個包來管理,每當有外部import的時候,就會自動執行裡面的函數。

它具有以下幾個作用:


1. 標識該目錄是一個python的模塊包(mole package)

如果你是使用python的相關IDE來進行開發,那麼如果目錄中存在該文件,該目錄就會被識別為 mole package 。


2. 簡化模塊導入操作

假設我們的模塊包的目錄結構如下:

.

└── 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就起到了簡化的作用。


2.1init.py 是怎麼工作的?

實際上,如果目錄中包含了__init__.py時,當用 import 導入該目錄時,會執行__init__.py裡面的代碼。我們在mypackage目錄下增加一個__ init __.py文件來做一個實驗:

.
└── mypackage
├── __init__.py
├── subpackage_1
│ ├── test11.py
│ └── test12.py
├── subpackage_2
│ ├── test21.py
│ └── test22.py
└── subpackage_3
├── test31.py
└── test32.py

mypackage/__init__.py裡面加一個print,如果執行了該文件就會輸出

print("You have imported mypackage")

下面直接用交互模式進行 import

>>> import mypackage
You have imported mypackage

很顯然,__init__.py在包被導入時會被執行。

2.2 控制模塊導入

我們再做一個實驗,在 mypackage/init.py 添加以下語句:

from subpackage_1 import test11

我們導入 mypackage 試試:

>>> import mypackageTraceback (most recent call last):
File "<stdin>", line 1, in <mole>
File "/home/taopeng/Workspace/Test/mypackage/__init__.py", line 2, in <mole>
from subpackage_1 import test11ImportError: No mole named 'subpackage_1'

報錯了。。。怎麼回事?
原來,在我們執行import時,當前目錄是不會變的(就算是執行子目錄的文件),還是需要完整的包名。

from mypackage.subpackage_1 import test11

綜上,我們可以在init.py 指定默認需要導入的模塊

2.3 偷懶的導入方法

有時候我們在做導入時會偷懶,將包中的所有內容導入

from mypackage import *

這是怎麼實現的呢?__all__變數就是干這個工作的。
__all__關聯了一個模塊列表,當執行from xx import *時,就會導入列表中的模塊。我們將__init__.py修改為 :

__all__ = ['subpackage_1', 'subpackage_2']

這里沒有包含subpackage_3,是為了證明__all__起作用了,而不是導入了所有子目錄。

>>> from mypackage import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']

>>>

>>> dir(subpackage_1)['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

子目錄的中的模塊沒有導入!!!
該例子中的導入等價於:from mypackage import subpackage_1, subpackage_2
因此,導入操作會繼續查找 subpackage_1 和 subpackage_2 中的__init__.py並執行。(但是此時不會執行 import *)
我們在 subpackage_1 下添加__init__.py文件:

__all__ = ['test11', 'test12']# 默認只導入test11

from mypackage.subpackage_1 import test11

再來導入試試

>>> from mypackage import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']

>>>

>>> dir(subpackage_1)['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'test11']

如果想要導入子包的所有模塊,則需要更精確指定。

>>> from mypackage.subpackage_1 import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'test11', 'test12']


3. 配置模塊的初始化操作

在了解了__init__.py的工作原理後,應該能理解該文件就是一個正常的python代碼文件。
因此可以將初始化代碼放入該文件中。



『陸』 python程序包中為什麼會有__init__.py,這個有什麼作用

__init__.py的作用有如下幾點:
1. 相當於class中的def __init__(self):函數,用來初始化模塊。
2. 把所在目錄當作一個package處理

3. from-import 語句導入子包時需要用到它。 如果沒有用到, 他們可以是空文件。
如引入package.mole下的所有模塊
from package.mole import *
這樣的語句會導入哪些文件取決於操作系統的文件系統. 所以我們在__init__.py 中加入 __all__變數.
該變數包含執行這樣的語句時應該導入的模塊的名字. 它由一個模塊名字元串列表組成.

『柒』 python裡面 init的用法

打少了一個下劃線,應該是__init__,如果寫成_init_,則在建立對象時不會得到調用,也就不能初始化hungry.

『捌』 python3.3中_init_的用法

__init__方法在類的一個對象被建立時,馬上運行。這個方法可以用來對你的對象做一些你希望的 初始化 。注意,這個名稱的開始和結尾都是雙下劃線。
def __init__(self):
self.name='lyl'
def sayhi(self):
print('hello,my name is',self.name)

『玖』 python腳本下面的 __init__.py 有什麼作用呢

_init_.py的作用:

首先一旦創建一個python的package,就會出來一個_init_.py的文件

init.py裡面一般寫這兩句話:

[1]:from .girl import hello
[2]:from .girl import *

[1]

一個是導入該package下的girl文件的hello函數

[2]

一個是導入該package下的girl文件的所有函數

比如在bb.py這個文件中導入girl的hello函數

原來init.py文件為空時:方法如下:

from boy.girl import hello

當寫成【1】時:

from boy import hello

兩者的關系時一致的。

至於第一個init.py有導入的作用,但我認為意義不大,

所以當前認為init.py最大的作用是區別該文件夾是package,還是純粹的目錄。

熱點內容
模胚手編程 發布:2025-01-20 12:06:59 瀏覽:908
java單例實現 發布:2025-01-20 11:48:40 瀏覽:333
cad為什麼載入不了配置 發布:2025-01-20 11:37:45 瀏覽:16
伺服器記錄的手機ip 發布:2025-01-20 11:32:47 瀏覽:672
sparksql查詢 發布:2025-01-20 11:27:51 瀏覽:204
安卓奧特曼格鬥進化1怎麼發大招 發布:2025-01-20 11:17:03 瀏覽:605
試驗數據存儲 發布:2025-01-20 11:03:38 瀏覽:305
聯想如何將密碼退出 發布:2025-01-20 10:51:41 瀏覽:972
ftp傳輸文件連接失敗 發布:2025-01-20 10:49:39 瀏覽:723
xp共享訪問不了 發布:2025-01-20 10:40:05 瀏覽:946