假设我需要将传入数据写入云中的数据集中。我何时,何地以及是否需要代码中的数据集,取决于传入的数据。我只想对数据集进行一次引用。实现此目标的最佳方法是什么?
在开始时初始化为全局变量,并通过全局变量进行访问
if __name__="__main__":
dataset = #get dataset from internet
这似乎是最简单的方法,但是即使不需要它,也要初始化变量。
第一次需要数据集时获取参考,保存在全局变量中,并使用get_dataset()
方法进行访问
dataset = None
def get_dataset():
global dataset
if dataset is none
dataset = #get dataset from internet
return dataset
第一次需要数据集时获取参考,另存为函数属性,并使用get_dataset()
方法进行访问
def get_dataset():
if not hasattr(get_dataset, 'dataset'):
get_dataset.dataset = #get dataset from internet
return get_dataset.dataset
任何其他方式
您可能希望将调用数据的服务包装到一个类中
class MyService():
dataset = None
def get_data(self):
if self.dataset = None:
self.dataset = get_my_data()
return self.dataset
然后,您可以在主实例中实例化一次,并在需要时使用它。
if __name__="__main__":
data_service = MyService()
data = data_service.get_data()
# or pass the service to whoever needs it
my_function_that_uses_data(data_service)
这清楚表明存在dataset
要使用的变量。
同样,使用对象和类会使大型项目更加清晰,因为功能应该从类名和方法中不言自明。
请注意,您也可以轻松地使它成为通用服务,并通过它来获取初始化中的数据(例如url?),因此可以在不同的端点上重复使用它。
与您的选项相比,与此相对的是,如果需要(或错误地),您可以多次实例化同一类,在这种情况下,将为每个实例获取并存储数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句