我该把哪些辅助函数放在哪里,以便使用公共模块的脚本?
我最近在开发一组Python脚本,简单来说,就是用我自己写的解析器来处理一组输入文件。这个项目的设计大致是这样的:
/project/project/__init__.py
/project/project/parser.py
/project/project/helperfunctions.py
/project/preferences.ini
/project/script1.py
/project/script2.py
每个脚本都会调用一些来自helperfunctions.py
的函数,来完成像读取偏好设置文件这样的任务——如果不这样做,每个脚本都得重复写一遍这些代码。而这些辅助函数根本不被解析器使用。
不过现在我决定要把项目的重点放在解析器上,同时让脚本保持在一边。所以现在项目看起来是这样的:
/project/scripts/preferences.ini
/project/scripts/script1.py
/project/scripts/script2.py
/project/parser.py
/project/setup.py
我觉得这样设计更简洁,但问题是我不太确定该把那些辅助函数放在哪里。以下是我想到的一些方案:
- 让
setup.py
在安装解析器时一起安装helperfunctions.py
。我不太赞成这个,因为这些辅助函数只是提供一些方便的方法,跟解析器并没有直接关系。 - 把辅助函数合并到解析器里,作为一种“隐藏”的类。我也不太赞成这个,理由和上面一样。
- 把辅助函数放到
/project/scripts/
里,避免安装。我不喜欢这个主意,因为这会让人觉得helperfunctions.py
本身也是一个脚本。
那么,解决这个问题最符合Python风格的方法是什么呢?
1 个回答
1
一种选择是在 __init__.py
文件里放一些辅助函数,这样你就可以在解析模块里直接调用它们了。
我不太清楚你的函数有多复杂……它们只是普通的函数,还是说是一些辅助类呢?
思考的角度应该是从使用者的角度来看(也就是使用解析器和那些辅助函数的人)。你(或者其他人)会怎么调用这些函数呢?