[Python]运行一次的函数然后在再次调用时记住结果

时间:2018-06-03 03:22:52

标签: python python-3.x function

我有一个从非常大的文件构建列表的函数。该列表在不同阶段多次使用。显然,它只需运行一次,运行它就会浪费时间。

我的问题是如何让一个函数运行一次并返回列表,但是当再次调用该函数时,它只返回列表并且不再运行。

我不仅仅是将列表作为全局变量。我知道我可以使用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"]

0 个答案:

没有答案