这不是关于为什么使用全局变量是错误的一般问题-该问题特定于以下情况。
我有一个名为module_c
的模块,该模块调用网络API,并将数据存储到全局data
变量中:
data = None
def load_alot_of_data():
global data
# This function loads alot of data and it takes a long time to do it.
data = 1
def get_data():
if data != None:
return data
else:
load_alot_of_data()
return data
该模块的用户可以通过调用get_data获得data
对象的副本。但是,有人告诉我,以这种方式使用全局变量既是反模式的又是非Python的。在Python中存储或缓存此类对象的正确方法是什么?
我不使用类,是因为该类的实例永远不会超过一个,或者根本不会实例化-因此是模块。