
python中导入包中的__init__文件夹的一个重要作用(去年对文件名的导入)
发布日期:2021-05-06 21:49:10
浏览次数:17
分类:技术文章
本文共 628 字,大约阅读时间需要 2 分钟。
问题来源:使用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__文件中加入了文件名->对象;直接将对象添加到包的第一个子集中了
函数亦可;本质上是导入可见;
发表评论
最新留言
很好
[***.229.124.182]2025年03月14日 19时47分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
位运算
2019-03-04
MarkDown
2019-03-04
线性代数 16 向量空间
2019-03-04
nginx 配置实例 - 反向代理(1)
2019-03-04
c++ 函数化 面向对象
2019-03-04
【无需额外安装插件】vscode 同步插件、设置、UI状态 | 超简单方法
2019-03-04
【unity shader 入门精要】CH2 渲染流水线
2019-03-04
【unity shader 入门精要】CH7 基础纹理
2019-03-04
java学习笔记6:windows、linux安装配置jdk
2019-03-04
java学习笔记24:文档注释与代码块
2019-03-04
java学习笔记31:Arrays类介绍使用
2019-03-04
java学习笔记36:Integer的基本方法
2019-03-04
java学习笔记37:Long的基本方法
2019-03-04
java并发学习2:线程的应用
2019-03-04
java并发学习12:问题引入
2019-03-04
java并发学习20:park与unpark
2019-03-04
java并发学习24:固定运行顺序模式
2019-03-04
html5学习9:HTML5文档结构详解
2019-03-04
介绍一个不错的分析客户价值的模型RFM
2019-03-04
SpringMVC---使用
2019-03-04