python中__init__文件的作用

目的:控制包的导入行为
简单来说:python程序运行时,__init__.py文件会将当前目录(文件夹)激活为module(模块包),其他模块引用此package模块时会自动加载运行该__init__.py文件,便于开发人员在__init__.py中做一些初始化操作。


目录中的__init__.py文件作用:将当前整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。
(1)标识该目录是一个python的模块包
(2)简化模块导入操作
(3)功能的封装和细节隐藏

 

对于第2点详细说明,假定现在项目结构如下:

package1
    -> __init__.py
    -> model1.py
    -> model2.py
    -> model3.py
package2
    -> utils.py
run.py

那么,如果程序需要在多个py文件多次使用到package1时,这时可以直接在package1.__init__.py中提前导入需要的各个py模块,也可以对相关功能函数起别名提供统一访问函数,实际使用时只需导入package1即可,避免了频繁的导入package1中的各个模块。
  

可以被import语句导入的对象是以下类型:

  •     模块文件(.py文件)
  •     C或C++扩展(已编译为共享库或DLL文件)
  •     包(包含多个模块)
  •     内建模块(使用C编写并已链接到Python解释器中)

在导入模块时,解释器做以下工作:

  1.     以导入模块的名称创建新的命名空间,通过该命名空间可以访问导入模块的属性和方法。
  2.     在[新创建的命名空间]中执行源代码文件。
  3.     创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量

        
可以在程序中使用import多次导入同一个模块,但模块代码仅在该模块首次导入时执行,后面import语句只是简单的创建一个到模块名字空间的引用而已    
    
import直接导入和from import导入的区别:    
使用from语句可以把[模块]直接导入[当前命名空间],from语句并不引用导入[对象的命名空间],而是将[被导入对象]直接引入[当前命名空间]

 

此外,在__init__.py定义__all__变量,用以限定需要导入的的属性、方法、类。

 

-- over --

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Python,如果一个文件夹下存在一个名为`__init__.py`的文件,那么这个文件夹就被视为一个Python包。`__init__.py`文件可以包含一些初始化代码,例如导入模块、定义变量或函数等。这些代码将在导入包时被执行。此外,`__init__.py`还可以控制包的导入行为,例如指定哪些模块可以被导入、提供别名等。在Python 3,`__init__.py`文件是可选的,如果不存在该文件Python仍然可以将文件夹作为包进行导入。 ### 回答2: 在Python,`__init__.py` 是一个特殊的文件。它的作用是将一个目录转换为一个Python包,使得我们可以在这个目录下进行模块的导入操作。 首先,当我们创建一个新的文件夹,并在其创建一个名为`__init__.py`的文件时,该文件夹就被认为是一个包。这个文件可以是空文件,也可以包含一些初始化代码。当我们使用`import`语句导入这个包时,`__init__.py`会在导入之前执行。 其次,`__init__.py`还可以定义包的属性和方法。我们可以在这个文件定义一些需要在包被导入时执行的初始化操作,例如初始化全局变量、加载配置文件等。这样一来,当我们导入这个包时,`__init__.py`会被自动执行,从而保证了我们的初始化操作能得到执行。 此外,在一个包内的子文件也可以存在`__init__.py`文件。这样的子文件夹也被称为子模块。这些`__init__.py`文件可以用来定义子模块的初始化操作,或者导入其他模块、子模块。 总的来说,`__init__.py`文件Python作用是将一个文件夹转换为一个包,并可以在其定义初始化代码和属性、方法。使用`__init__.py`文件,我们可以更好地管理和组织我们的代码,使得代码结构更清晰,也更加易于维护和扩展。 ### 回答3: 在Python,一个文件夹下面有一个名为`__init__.py`的文件,它是一个特殊的文件,用于标识该文件夹是一个Python包。 当Python解释器在解析文件夹的时候,如果发现该文件夹下存在`__init__.py`文件,就会将其视为一个包,并且可以通过该包来组织和管理相关的模块。 `__init__.py`文件可以是一个空文件,也可以包含Python代码。它的目的主要有以下几个: 1. 将文件夹标识为一个Python包:这使得可以使用import语句导入整个包或包的模块。 2. 初始化包的内容:可以在`__init__.py`执行一些初始化操作,例如定义变量、导入模块、设置包级别的配置等。 3. 控制包的导入方式:可以通过在`__init__.py`定义`__all__`变量,控制包被导入时,可以通过import *语句导入的模块。 通常,在一个包目录下的`__init__.py`文件,会有一些常用的配置、初始化和导入操作,以及对外部提供的接口。这些操作使得使用包时变得方便,可以直接使用包名引用其的模块或变量。 总而言之,`__init__.py`文件是用于标识一个文件夹为Python包,并且可以在其进行一些初始化和导入操作的特殊文件。它在组织和管理Python模块时起到了关键的作用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值