在模块之间导入全局变量

时间:2018-09-05 07:15:16

标签: python string variables module

我的python代码的当前设置如下:

也用于其他项目: general_settings.py-处理导入和一些通用工具功能 actual_functions.py-项目的“主力函数”

特定于项目 variable_names.py =这是将字符串声明为变量的地方 run_project.py-这是我调用函数的地方

我正在使用来自excel电子表格的信息,这些信息已读入Pandas Dataframes。 因为对于每个项目,源excel电子表格可能会有所不同,所以我在代码中的列中使用了变量名。

例如,如果我想对一列的余额求和而不是这样做

df['Balance'].sum()

我首先定义余额:

bal = 'Balance' and then use df[bal].sum()

原因是有时源excel文件的标头具有不同的标题,例如“当前余额”而不是“余额”。 因此,通过更新变量“ bal”,我可以轻松地解决这个问题,它还允许我使用短变量名,保持代码简短和使用自动完成功能(我正在使用PyCharm)。

在actual_functions.py和run_project.py中,我使用来自general_settings import * and from variable_names import *

的语句

这可以正常工作,但感觉不是最佳解决方案。
1.如果我想使用actual_functions.py运行其他磁带,则必须更改此脚本顶部的import语句。
2.我正在使用全局变量来传递字符串,这感觉不太好

以上两点可以通过在定义这些变量的函数中使用参数来解决,但是,由于变量名中有很多变量(大约20个),因此无法将每个变量名导入函数中在actual_functions.py中。

是否可以使用某种设置文件(词典)将变量名/字符串导入每个函数中?还是我缺少的其他解决方案?任何指针将不胜感激。

感谢下面的回答,我发现此参考文献使用了子类http://devanla.com/case-for-inheriting-from-pandas-dataframe.html

1 个答案:

答案 0 :(得分:1)

如果您有一个需要大量参数的函数,则可以通过提供有用的默认值来提供帮助,以便在调用时仅需要提供一些参数。

如果您有一组使用相似参数的相关函数,则可以考虑将它们放在一个类中并设置通用设置成员变量。