我正在研究一些查询数据库的软件。特别是,如果您使用某个参数查询数据库,它将找不到匹配的值,因此您应该使用其他参数再次查询它。
下面是概述问题的简短脚本。 query_db
只是一个伪函数,旨在模仿对包含由1
索引的条目的数据库的查询行为。在get_db_params
函数中,我使用a
参数查询数据库。如果返回None
,那么我将使用b
参数重试。如果那也返回None
,则get_db_params
会引发错误。
以get_db_params
和d1
作为参数调用d2
会返回“ some_value”,而d3
会引发KeyError
。
我的问题是:这似乎不是很Python,特别是连续有两个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)
答案 0 :(得分:3)
我认为您最初写的没问题。
可能有效的另一种说法:
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")