我该把哪些辅助函数放在哪里,以便使用公共模块的脚本?

3 投票
1 回答
3241 浏览
提问于 2025-04-17 14:37

我最近在开发一组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 文件里放一些辅助函数,这样你就可以在解析模块里直接调用它们了。

我不太清楚你的函数有多复杂……它们只是普通的函数,还是说是一些辅助类呢?

思考的角度应该是从使用者的角度来看(也就是使用解析器和那些辅助函数的人)。你(或者其他人)会怎么调用这些函数呢?

撰写回答