A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如果直接 import 包名 ,我们是无法通过 包名,模块名,函数名()   来调用包里面的函数的。

例如下面:


解决方案: 利用__init__.py文件进行初始化,导入这个包下的所有模块

import test_package
导入包会自动执行包中的__init__.py文件。在这个文件中我们可以做一些初始化工作。一般情况下我们既然会导入这个包,证明我们需要用到这个包下的多个甚至所有模块,所以我们所说的一些初始化工作就是在__init__.py文件中导入这个包下的所有模块:
from . import 模块1
from . import 模块2
......
而当我们调用的时候需要这样:
包名.模块名.函数名()   # test_package.test_module.test()


一级目录:



  • '''test.py'''







  • import mglearn







  • mglearn.datasets.make_wave(n_samples=40)


运行结果:


二级目录:





  • '''__init__.py'''







  • from . import plots




  • '''plots.py'''







  • from .plot_linear_regression import plot_linear_regression_wave




  • '''plot_linear_regression.py'''







  • from .datasets import make_wave







  • def plot_linear_regression_wave():



  •     pass




  • '''datasets.py'''







  • def make_wave(n_samples=100):



  •     print('hello 111111')


分析:

一开始是不能直接执行  mglearn.datasets.make_wave(n_samples=40)  这行调用的。但是,我们在__init__.py文件中导入这个包下的所有模块。


注意:

这时的模块导入像遍历一样,一层一层的下去,全都导入了进来:

(1)__init__.py  导入了  plots.py

(2)plots.py  导入了  plot_linear_regression.py

(3)plot_linear_regression.py  导入了  datasets.py

(4)直接通过mglearn.datasets.make_wave(n_samples=40) ,即包名.模块名.函数名() ,调用了 datasets.py里面的make_wave()函数



1 个回复

正序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马