`__init__` 对目录有什么区别?

发布于 2024-12-10 15:01:32 字数 196 浏览 0 评论 0原文

在python中,包含一个或多个模块的目录有时会有__init__.py,这样该目录就可以被视为一个pythonpackage,这是正确的吗? __init__ 有何不同? (还有另一个问题,Python 模块只是一个包含相关且可能独立(与其他文件)的类、函数和变量集的 Python 代码文件吗?)

In python, a directory containing one or more modules sometimes has __init__.py, so that the directory can be treated as a python package, is this correct? What differences the __init__ makes? (also another Q, is a python module just a python code-file with related and possibly independent (to other files) set of classes, functions and variables?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

在你怀里撒娇 2024-12-17 15:01:32

这是解释,说明为什么需要__init__.py

需要 __init__.py 文件才能使 Python 将目录视为包含包;这样做是为了防止具有通用名称(例如 string)的目录无意中隐藏模块搜索路径中稍后出现的有效模块。在最简单的情况下,__init__.py可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__变量,稍后介绍。

正如我刚刚向另一位发帖者推荐的那样,模块教程内容非常丰富。

Here's an explanation for why __init__.py is needed:

The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__ variable, described later.

As I've just recommended to another poster, the tutorial on modules is pretty informative.

勿忘心安 2024-12-17 15:01:32

另外,当被视为模块时,__init__.py的内容成为包的内容,即somepackage/__init__.py的内容将在中找到>dir(somepackage) 当您导入 somepackage 时。

模块本身可以是 Python 代码,特制的 C代码,或者它们可能是由注入的人工构造加载 Python VM 的可执行文件。

In addition, the contents of __init__.py becomes the contents of the package when treated as a module, i.e. the contents of somepackage/__init__.py will be found in dir(somepackage) when you import somepackage.

Modules themselves can be Python code, specially-crafted C code, or they could be an artificial construct injected by the executable that loads the Python VM.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文