Python模块布局
我刚开始做Python项目,到了需要用到多个包的阶段,但对这些东西是怎么一起工作的有点困惑。包里的__init__.py
文件里到底应该放些什么呢?我看到有些项目的这个文件是空的,所有的代码都放在包里的模块里。而其他项目则在这个文件里实现了大部分包的类和函数。
有没有什么文档或者风格指南,能告诉我Python的作者对包和__init__
文件的使用有什么想法?
编辑:
我知道__init__.py
文件的最基本作用是让一个文件夹变成一个包。但我为什么要把一个函数放在这里,而不是放在同一个文件夹(包)里的模块里呢?
2 个回答
1
你可能已经知道,__init__.py 文件是让 Python 把文件夹当作包来处理的必要文件。
在上面的例子中,__init__.py 文件可以是空的。
你也可以在这个文件里写一些初始化代码,让包在使用时做一些准备。
你还可以设置一个叫 __all__ 的变量。
[编辑:学习内容] 当你使用 "from package import item" 或 "from package import *" 的时候,__all__ 变量可以用来选择性地导入特定的包。
8
__init__.py
文件可以是空的,但它的主要作用是让 Python 正确地处理你的文件夹。它可以在你导入包的时候做一些初始化,比如配置环境之类的事情,或者定义 __all__
,这样 Python 就知道当有人使用 from package import *
时该怎么做。
你需要了解的大部分内容都可以在 关于包的文档 中找到。Dive Into Python 也有关于打包的相关内容。