问题来源:使用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无法识别;
扫描二维码关注公众号,回复:
5919095 查看本文章
查看bayes_opt包中__init__文件夹,发现多了几个命令;
假设2:__init__文件起到作用了?
该文件中存在语句:如图所示:
于是在自己的Tpackages包下__init__文件中添加
from .ny_test import aa
然后再执行main文件,就ok了;
相当于init文件间接执行了文件导入;所以在外部调用时,就没有这一步;本质上是有,只是被隐藏了; 本质上都必须:包名->文件名->对象;之所以能成功包名->对象;是因为__init__文件中加入了文件名->对象;直接将对象添加到包的第一个子集中了
函数亦可;本质上是导入可见;