是否有客观,强烈的理由反对为每组相关模块都拥有一个文件,而不是将它们大量地包装在一个模块中?例如,假设我有一个名为utils
的子包,它提供的实用程序之一是关于数据的输入和输出。我的意思是,将大功能(及其重要的相关子功能)放入“专用”模块,然后通过导入主模块io
来调用它们是错误的。
utils/
io.py
_pprint.py
_ptable.py
说_pprint
是一个大方法,它需要一些其他小的子方法,由于它们之间的相关性很高,所以这些子方法也将在_pprint.py
模块中。
基本上,问题是我有一个io.py
模块(以及其他一些模块),其中包含20个函数,要阅读/滚动查找某些我想更改的特定函数很麻烦。我想有一个io
模块,可以通过import package.io
进行调用,然后在io.py
内导入与I / O相关的其他模块,或类似的东西(也许我需要对子包进行此操作,以使用更多的__init__.py
)。
答案 0 :(得分:1)
不,只要它仍然可以导航,那么拥有一堆独立文件就没有错。
关于您有一个“可以通过import package.io调用的io模块”的问题,轻松实现此目的的方法是将目录结构化:
packages -> io -> __init__.py
在__init__.py中,具有子模块的导入:
__ init __。py:
from packages.io import submodule
调用import packages.io
时,子模块将成为属性
package.io。
请记住__init__.py导入需要来自主脚本的 视角。
运行此命令应该为您提供目录和文件的布局,以供播放:
import os
os.makedirs("./packages/io")
with open("./main.py", 'w') as f:
f.write("import packages.io as io\n")
f.write("io.module1.call()\n")
f.write("io.module2.call()\n")
with open("./packages/io/__init__.py", 'w') as f:
f.write("from packages.io import module1\n")
f.write("from packages.io import module2\n")
with open("./packages/io/module1.py", 'w') as f:
f.write("def call():\n")
f.write("\tprint('Module 1 called')")
with open("./packages/io/module2.py", 'w') as f:
f.write("def call():\n")
f.write("\tprint('Module 2 called')")