All is well 3 idiots

AC小小常

【Python函数与模块】(13)讲讲__init__.py

写在前面:以下出现包与模块的名称以及其中的方法可以参考博客:https://www.cnblogs.com/ac-chang/p/12673223.html

 

1. 注意是英文半角的双下划线

2. 将一个文件夹变成模块

3. 导入包实际是导入它的__init__.py

4. 一般为空,可以批量导入所需模块

 

__init__.py文件一般为空,而它在一个包下含有多个子文件时起到了很大的作用

例如:直接导入pay包,想要调用其子包中模块的方法

import pay

pay.alipay.pay()

 

程序报错:说在 'pay' 模块下没有找到 'alipay' 属性

 

然而,alipay实际上是pay的子文件,想要找到子文件中模块的方法,需要在pay下的__init__.py编写如下代码:

from . import alipay
from . import wechat_pay

 

这是再运行之前的例子,程序继续报错,不过这次报的是在 'pay.alipay' 下找不到 'pay' 属性

 

这是因为alipay是一个包,包下有tools模块,pay()方法在tools模块下,这时,需要在alipay下的__init__.py中编写如下代码:

from .tools import pay
from .tools import get_status

 

同理,wechat_pay下的__init__.py编写如下代码:

from .tools import pay

 

再次运行程序,正确执行了

 

posted on 2020-04-10 14:46  AC小小常  阅读(248)  评论(0编辑  收藏  举报

导航