python 学习笔记__init__.py

python的每个模块的包中,都有一个init.py文件,有了这个文件,我们才能导入这个目录下的module。
其实,init.py里面是可以有内容的,我们在导入一个包时,实际上导入了它的init.py文件。
我们可以在init.py文件中再导入其他的包,或者模块。

Package1/ __init__.py    Module1.py    Module2.py    Package2/ __init__.py       Module1.py       Module2.py 

我们可以就这样导入一个包:

from Package1 import Module1
from Package1 import Package2
import Packag1.Module1
import Packag1.Package2 

init.py 控制着包的导入行为。如果 init.py 为空,那么仅仅导入包是什么都做不了的。

>>> import Package1
>>> Package1.Module1

Traceback (most recent call last):

 File "<pyshell#1>", line 1, in ? 

 Package1.Module1AttributeError: 'module' object has no attribute 'Module1' 

我们需要在 init.py 里把 Module1 预先导入:


#文件 __init__.py

     import Module1 

>>> import Package1

>>> Package1.Module1

<module 'Package1.Module1' from 'Module.pyc'>

init.py 中还有一个重要的变量,叫做 all。全部导入

from PackageName import * 

这时 import 就会把注册在包 init.py 文件中 all 列表中的子模块和子包导入到当前作用域中来。

比如:

#文件 __init__.py

__all__ = ['Module1', 'Module2', 'Package2'] 

测试:

>>> from Package1 import *
>>>> Module2<module 'Package1.Module2' from 'Module.pyc'>

init.py 文件会在导入时被执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值