Python模块布局

15 投票
2 回答
3191 浏览
提问于 2025-04-16 06:43

我刚开始做Python项目,到了需要用到多个包的阶段,但对这些东西是怎么一起工作的有点困惑。包里的__init__.py文件里到底应该放些什么呢?我看到有些项目的这个文件是空的,所有的代码都放在包里的模块里。而其他项目则在这个文件里实现了大部分包的类和函数。

有没有什么文档或者风格指南,能告诉我Python的作者对包和__init__文件的使用有什么想法?

编辑:
我知道__init__.py文件的最基本作用是让一个文件夹变成一个包。但我为什么要把一个函数放在这里,而不是放在同一个文件夹(包)里的模块里呢?

2 个回答

1

你可能已经知道,__init__.py 文件是让 Python 把文件夹当作包来处理的必要文件。

  1. 在上面的例子中,__init__.py 文件可以是空的。

  2. 你也可以在这个文件里写一些初始化代码,让包在使用时做一些准备。

  3. 你还可以设置一个叫 __all__ 的变量。

[编辑:学习内容] 当你使用 "from package import item" 或 "from package import *" 的时候,__all__ 变量可以用来选择性地导入特定的包。

详情请见: http://docs.python.org/tutorial/modules.html

8

__init__.py 文件可以是空的,但它的主要作用是让 Python 正确地处理你的文件夹。它可以在你导入包的时候做一些初始化,比如配置环境之类的事情,或者定义 __all__,这样 Python 就知道当有人使用 from package import * 时该怎么做。

你需要了解的大部分内容都可以在 关于包的文档 中找到。Dive Into Python 也有关于打包的相关内容。

撰写回答