我正在为一个基本上是api包装器的函数添加缓存功能。它的要点如下:
def get_data(do_cache, *args):
if do_cache:
pkl_id = '/path/to/dir/' + get_cache_id(args) +'.pkl'
try:
data = read_data_from_pkl(pkl_id)
return data
except FileNotFoundException:
pass
data = get_data_from_api(args)
if do_cache:
cache_data_to_pkl(data, pkl_id)
return data
我已经拆分了do_cache
个上下文,因为如果这个参数设置为False
,那么我既不想读取也不想写入磁盘,只需将结果返回给api调用。
这当然有效,但我的代码味道很糟糕。我的IDE不仅警告我,它无法确定第二个条件上下文中的cache_id
是否已创建,但这对我来说感觉很奇怪。有没有人见过这种方法会产生问题?