Python 关于构造ETL应用程序代码的建议

Python 关于构造ETL应用程序代码的建议,python,python-3.x,Python,Python 3.x,我需要一些关于为ETL应用程序构建代码的最佳实践的建议 我目前的结构大致如下: main_process.py mid_level_process.py setup.py __init__.py module1.py modules2.py ... 我的问题是,这些“中间级进程”调用了许多打包在dir结构较低级别中的函数,但是为了可维护性和可读性,在主进程中将它们本身作为函数调用更有意义。把这些也放在较低的一层是不是一种不好的做法?让这些模块互相调用函数感觉

我需要一些关于为ETL应用程序构建代码的最佳实践的建议

我目前的结构大致如下:

main_process.py

mid_level_process.py

setup.py

   __init__.py

   module1.py

   modules2.py

   ...

我的问题是,这些“中间级进程”调用了许多打包在dir结构较低级别中的函数,但是为了可维护性和可读性,在主进程中将它们本身作为函数调用更有意义。把这些也放在较低的一层是不是一种不好的做法?让这些模块互相调用函数感觉很糟糕?或者最好在main_process.py中定义函数,然后在那里调用它们?

这里没有硬性规定,除了

这是
\uuuu init\uuuu.pt
公开的内容,它构成了一个包,并且在很大程度上与目录的结构无关。(但是让我们忽略
\uuuu init\uuuu.py
,假设它存在并且是空的,因此您有一个具有文件系统精确布局的包。)

然而,对于可维护性和可读性,在主流程中将它们本身称为函数更有意义

没问题
Main_process.py
可以从
mid_-level_process.py
module1.py
module2.py
导入到目前为止没有任何循环

把这些也放在较低的一层是不是一种不好的做法

如果
Main_-process.py
mid_-level_-process.py
都是从
module1.py
module2.py
导入的,这是有意义的。您可以这样做,并将它们放在一个单独的包中。(当两个模块都使用例如
int
时,不反对一个模块导入另一个模块,对吧?!)

如果您选择使用
mid_level_process.py
调用后两者作为有效的中介,但是如果您还希望将它们导入
Main_process.py
,则这也是有效的

module1
module2
与其他两个模块放在同一级别的问题在一定程度上是主观的,取决于上下文。是否存在一些概念模块化或将它们分开的原因?在完全不同的上下文中,其他模块是否希望导入
module1
module2
,而不需要
main
mediator
?这样就不需要将它们放在同一个包或同一个目录级别上

你现在的安排才有意义