我创建了许多不同的功能来对同一数据进行分析。数据位于一个大型的csv文件中,我不想多次打开它才能使用该数据。
我创建了一个仅用于打开数据的功能-该功能将检查数据框是否为空,然后打开文件-或是否具有数据,然后仅提供该数据。
为此,我创建了一个全局变量来保存数据。
所以我的主文件将有多个DATA = pd.DataFrame()
,对于每个文件,我都会这样打开它:
def get_data():
global DATA
if DATA.empty:
DATA = pd.open_csv(file.csv)
return DATA
else:
return DATA
使用全局变量的问题是,我所有的分析函数都必须与相应的get_data函数位于同一文件中。
随着我创建更多函数,我希望能够将它们拆分为多个文件。
答案 0 :(得分:1)
没有理由不能按您希望的方式拆分方法。试试这个:
# get_data.py
DATA = pd.Dataframe()
def get_data():
global DATA
if DATA.empty:
DATA = pd.open_csv('file.csv')
return DATA
else:
return DATA
__all__ = ['get_data']
然后在您的分析模块中:
# analysis_1.py
from get_data import get_data
data = get_data()
analyse(data)
...
如果get_data
模块已经加载,则多次导入将不会重新运行模块内容。这样,您可以在get_data
模块本身中维护全局状态。