我有一个函数,它调用另一个方法并返回3个值,我必须将其存储在dict中,当回调相同的函数时,我必须检查dict是否已在dict中存储相同的值,如果我必须将其返回,否则将加载新的一组值。
IDS = {}
def get_ids(id):
if id in IDS:
return IDS[id], IDS[name], IDS[salary]
else:
id, name, salary = load_ids(id)
IDS['id'] = id
IDS['name'] = name
IDS['salary'] = salary
return id, name, salary
在这里我要替换第一个存储的ID,但是我必须用新ID添加新值,load_ids进行一些计算并返回一些值
答案 0 :(得分:5)
您可以使用functools.lru_cache
免费获得它:
from functools import lru_cache
@lru_cache(maxsize=512)
def get_ids(id, name, salary):
id, name, salary = load_ids(id, name, salary)
return id, name, salary
答案 1 :(得分:1)
如果要继续执行示例,可以执行以下操作。
# Example
IDS = {1: {'name': 'Peter', 'salary': 200000}}
def get_ids(id):
if id in IDS:
return id, IDS[id]['name'], IDS[id]['salary']
else:
name, salary = load_ids(id)
IDS[id] = {}
IDS[id]['name'] = name
IDS[id]['salary'] = salary
return id, name, salary