参考:
https://www.bilibili.com/video/BV1QA94YPEMK
特性
- 如果两个文件在同一个路径下,这里是一个main,一个moduleA,当main中import moduleA,那么moduleA中的代码就会执行。

- 但是如果ModelA在一个package里面,然后main中import packageA,那么modelA中的代码不会执行。

- 如果package中有一个__init__.py,那么import package,init.py中的代码就会执行。

说明
在 Python 中,__init__.py 文件的主要作用是标记一个目录为 Python 的包(package)。它的存在告诉 Python 解释器,这个目录不仅仅是一个普通的文件夹,而是包含模块(modules)或子包的集合,可以被导入使用。以下是一些具体原因和用途:
包的标识 (只在py3.3之前) 如果一个目录里没有
__init__.py,Python 不会把它当作包,你就无法通过import语句导入里面的模块。比如说,有个目录结构:my_package/ __init__.py module1.py module2.py因为有
__init__.py,你可以用import my_package.module1来导入module1.py。初始化代码
__init__.py可以包含代码,在包被导入时自动执行。比如,你可以在里面定义一些变量、函数,或者导入子模块,方便用户使用。例如:# my_package/__init__.py from .module1 import some_function version = "1.0"这样,导入包时就能直接用
my_package.some_function()或my_package.version。控制导入行为
你可以通过__init__.py指定当用户用from my_package import *时暴露哪些内容,用__all__变量来定义:# my_package/__init__.py __all__ = ['module1', 'module2'] from . import module1, module2历史背景
在 Python 3.3 之前,__init__.py是必须的,不然目录不会被识别为包。从 Python 3.3 开始引入了“命名空间包”(namespace packages),允许没有__init__.py的目录也能作为包的一部分,但__init__.py仍然是组织代码的常用方式。
为什么需要写它?
简单来说,写 __init__.py 是为了让你的代码更有结构化、可重用性更强,尤其是在开发大型项目或库时。它就像一个“门面”,帮你管理模块的组织和初始化。
如果你只是随便写点小脚本,可能用不到它。但要是想把代码打包分享给别人,或者维护一个复杂的项目,__init__.py 就很有必要了。
有啥具体场景困扰你吗?可以告诉我,我帮你细化一下!
