我有一个从非常大的文件构建列表的函数。该列表在不同阶段多次使用。显然,它只需运行一次,运行它就会浪费时间。
我的问题是如何让一个函数运行一次并返回列表,但是当再次调用该函数时,它只返回列表并且不再运行。
我不仅仅是将列表作为全局变量。我知道我可以使用while循环来记住它,但这看起来很浪费。我认为有一种更优雅的方式来完成我正在寻找的东西。
我是否希望使用装饰器或单件(不确定它们是否在python中)。
示例:
state_ab = ['OH', "test", 'CO']
def build_US_state_list():
state_dict = []
for state in pycountry.subdivisions:
if state.country_code == 'US':
state_dict.append({'name': state.name, 'code': state.code[3:]})
return state_dict
def get_US_state_list():
try:
return state_dict
except:
state_dict = build_US_state_list()
print('ran')
return state_dict
def identify_and_add_US_states():
states = get_US_state_list()
print(states)
for i in range(0, len(state_ab)):
for state in states:
if state_ab[i] == state["code"]:
return state["code"]