我正在开发一些查询数据库的软件。特别是,如果您使用某个参数查询数据库,它将找不到匹配值,因此您应该使用不同的参数再次查询它。
下面是一个简短的脚本,概述了这个问题。query_db只是一个虚拟函数,旨在模拟对包含由1索引的条目的数据库的查询行为。在get_db_params函数中,我使用a参数查询数据库。如果返回None,则使用b参数重试。如果也返回None,则get_db_params抛出一个错误。
以d1和d2作为参数调用get_db_params将返回"some_value",而d3将引发KeyError。
我的问题是:这似乎不是很严格,特别是连续有两个if params is None:。对如何改进这些功能有什么建议吗?
def query_db(x):
if x == 1:
return "some_value"
else:
return None
def get_params(d):
params = query_db(d['a'])
if params is None:
params = query_db(d['b'])
if params is None:
raise KeyError("Params not found in db")
return params
d1 = {'a': 1, 'b': 1}
d2 = {'a': 0, 'b': 1}
d3 = {'a': 0, 'b': 0}
params = get_params(d1)
params = get_params(d2)
params = get_params(d3)发布于 2018-08-01 06:00:49
我认为你最初写的很好。
另一个可能有效的公式是:
def get_params(d):
for k in ['a', 'b']:
params = query_db(d[k])
if params is not None:
return params
raise KeyError("Params not found in db")https://stackoverflow.com/questions/51622508
复制相似问题