首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用替代输入再次调用函数的大多数pythonic方式

使用替代输入再次调用函数的大多数pythonic方式
EN

Stack Overflow用户
提问于 2018-08-01 05:41:13
回答 1查看 87关注 0票数 0

我正在开发一些查询数据库的软件。特别是,如果您使用某个参数查询数据库,它将找不到匹配值,因此您应该使用不同的参数再次查询它。

下面是一个简短的脚本,概述了这个问题。query_db只是一个虚拟函数,旨在模拟对包含由1索引的条目的数据库的查询行为。在get_db_params函数中,我使用a参数查询数据库。如果返回None,则使用b参数重试。如果也返回None,则get_db_params抛出一个错误。

d1d2作为参数调用get_db_params将返回"some_value",而d3将引发KeyError

我的问题是:这似乎不是很严格,特别是连续有两个if params is None:。对如何改进这些功能有什么建议吗?

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 06:00:49

我认为你最初写的很好。

另一个可能有效的公式是:

代码语言:javascript
运行
复制
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")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51622508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档