Python 包 __init__.py文件用法详解

1. 按

__init__.py中可以设置外界通过包名所能访问的模块。

  • 当外界使用import ...语句导入包后,就可以通过.访问我们指定对外提供的模块了。
  • 当外界使用from ... import ...直接导入包内的模块时,不论导入的模块是否在__init__.py中被指定了,都可以正常被导入。

2. 示例

目录结构如下:
在这里插入图片描述

2.1. 示例1

  • testPackage/__init__.py
    from . import send_module
    from . import receive_module
    
  • testPackage/receive_module.py
    def receive():
        print("receive function")
    
  • testPackage/send_module.py
    def send():
        print("send function")
    
  • main.py
    import testPackage
    
    testPackage.receive_module.receive()
    testPackage.send_module.send()
    

2.2. 示例2

在示例1的基础上,修改testPackage/__init__.py为:

#from . import send_module
from . import receive_module

这时再次执行时会报错module 'testPackage' has no attribute 'send_module',因为此时只能通过testPackage这个包名访问receive_module而不能访问send_module

2.3. 示例3

在示例2的基础上,修改main.py为:

import testPackage
from testPackage import send_module

testPackage.receive_module.receive()
testPackage.send_module.send()
send_module.send()

这时再次执行时就不会报错了。

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python中,是一种组织Python模块的方法,它将相关的模块组合在一起,形成一个大的模块。可以含子和模块,以及其他资源文件。 在一个目录中,通常会有一个名为`__init__.py`的文件。这个文件的主要作用是标识该目录为Python,同时可以在其中编一些初始化代码。 `__init__.py`可以为空文件,也可以Python代码。如果`__init__.py`文件存在,则在导入时会自动执行其中的代码。这就使得我们可以在的初始化过程中完成一些需要执行的操作,例如设置环境变量、导入必要的模块等。 例如,如果我们有一个名为`mypackage`的,那么它的目录结构可能如下所示: ``` mypackage/ __init__.py module1.py module2.py ``` 其中,`__init__.py`可以含一些初始化代码,例如: ```python # 在 __init__.py 中导入模块 from .module1 import * from .module2 import * ``` 这样,在导入`mypackage`时,就会自动导入`module1`和`module2`模块。 此外,`__init__.py`还可以定义级别的变量和函数,供内的模块使用。例如: ```python # 定义级别的变量 PI = 3.14 # 定义级别的函数 def square(x): return x ** 2 ``` 这样,在内的模块中,我们就可以直接使用`mypackage.PI`和`mypackage.square()`来访问这些变量和函数了。 总之,`__init__.py`文件Python的重要组成部分,它可以帮助我们更好地组织和管理Python代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COCO56(徐可可)

建议微信红包:xucoco56

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值