【Python】为什么要写__init__.py

文章目录

正常我们直接导入就可以执行,但是在package的时候,有一种__init__.py的特殊存在

引入moduleA.py,执行main.py,输出moduleA

PackageA(__init__特性)


加入package,在PackageA中加入__init__.py,优先执行__init__.py

应该往__init__.py里放什么东西?

1、包的初始化

环境变量、logging等

2、管理包的公共接口

包需要在外面被使用的东西

如果在main里引用moduleA里的x变量,会报错
ImportError: cannot import name 'x' from 'PackageA' (D:\Desktop\Python\Base\initPy\PackageA\__init__.py)


这样就需要在__init__.py中先引用

__all__的用法
通过*引入的话,all中的值才能被引用

3、包的信息

版本 version

作者 author

...


python 复制代码
print("成大事者,不拘小节")
相关推荐
m0_74825614几秒前
Spring 事务失效的 8 种场景!
java·数据库·spring
泛轻舟9634 分钟前
初识数组
java
dowhileprogramming17 分钟前
Python Flask 和数据库系统交互
数据库·python·flask
蜗牛 | ICU19 分钟前
【推荐项目】 043-停车管理系统
java·vue.js·spring boot·前端框架
吱屋猪_24 分钟前
全面解析Tomcat:简介、安装与配置指南
java·tomcat
_一条咸鱼_24 分钟前
Android Glide 框架线程管理模块原理的源码级别深入分析
android
裁二尺秋风26 分钟前
CI/CD—Jenkins实现自动构建Docker镜像运行Java程序
java·ci/cd·jenkins
_一条咸鱼_30 分钟前
Android Retrofit 框架注解定义与解析模块深度剖析(一)
android
苏琢玉33 分钟前
使用 Python 合并微信与支付宝账单,生成财务报告
python
beite爱摸鱼33 分钟前
简单实现一个DEEPSEEK前端+后端
java·vue.js