当前位置:首页 » 编程语言 » 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 13:08:41 浏览:40
标识符是怎样存储的 发布:2025-01-20 13:08:39 浏览:894
怎么看安卓大屏什么牌子 发布:2025-01-20 13:08:35 浏览:258
ios开发java 发布:2025-01-20 13:02:42 浏览:881
速腾有侧灯的是哪个配置 发布:2025-01-20 13:01:53 浏览:371
社保用户名和密码都忘记了怎么办 发布:2025-01-20 12:55:55 浏览:321
最优存储形式是什么 发布:2025-01-20 12:51:32 浏览:27
centos编译php7 发布:2025-01-20 12:33:52 浏览:920
android本地服务器搭建服务器 发布:2025-01-20 12:17:54 浏览:474
安卓两个焊点怎么接 发布:2025-01-20 12:15:15 浏览:936