使 main() 中加载的数据成为 Python 中函数的隐式参数的最佳方法

Best way to make data loaded in main() an implicit argument of a function in Python

我的主要功能从用户提供的 csv 中加载一个较大的数据帧(以及其他几个数据对象),然后实例化一个对象,该对象形成一堆方程式作为数学规划问题的一部分。许多方程式的组成部分都是通过调用我在 utils 文件中定义的大约 5 个辅助函数返回的(最重要的是,在存储优化问题的 class 之外)。这些辅助函数引用了在 main 中加载的数据,但我希望它们的调用在方程式中显示为仅由时间索引 t(而不是数据帧)参数化,以提高可读性。实现此目的的最佳方法是在 utils.py 中使用数据作为显式参数定义那些函数,然后在生成方程式之前使用 functools.partial 使它们隐含吗?

这对我来说似乎是一个冗长的方法,但其他选项似乎更糟糕:在 main 中定义辅助函数,或者放弃主函数加载数据的想法,这基本上意味着放弃有一个主要功能。并且可能会混淆循环导入。

我最终采用了我建议的答案:

define those functions in utils.py with the data as explicit parameters, and then use functools.partial before generating the equations to make them implicit

并且该代码库已经投入生产一年多了,对我来说这似乎很合理。