python中导入包中的__init__文件夹的一个重要作用(去年对文件名的导入)

问题来源:使用bayes包时,发现可以直接导入包名然后跳过文件名,直接引入文件中定义类;

假如说包名为bayes_opt,该文件夹目录下,存在一个文件名为bayesian_optimization;该文件中定义一个类名为BayesionOptimization; 在应用程序中可以直接导入

from bayes_opt import BayesianOptimization

可以看到直接跃过了文件名bayesian_optimization;和我所理解的不符;

假设:难道新的python3.6有了新的功能?

编写一个简单的包名Tpackages,文件名ny_test,定义一个类aa,一个函数bb

在main函数中写入:

from Tpackages import aa

aa无法识别;

查看bayes_opt包中__init__文件夹,发现多了几个命令;

假设2:__init__文件起到作用了?

该文件中存在语句:如图所示:

于是在自己的Tpackages包下__init__文件中添加

from .ny_test import aa

然后再执行main文件,就ok了;

相当于init文件间接执行了文件导入;所以在外部调用时,就没有这一步;本质上是有,只是被隐藏了; 本质上都必须:包名->文件名->对象;之所以能成功包名->对象;是因为__init__文件中加入了文件名->对象;直接将对象添加到包的第一个子集中了

  函数亦可;本质上是导入可见;

猜你喜欢

转载自blog.csdn.net/ningyanggege/article/details/89226504
今日推荐