首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将嵌套的if/else函数调用转换为python中的字典?

如何将嵌套的if/else函数调用转换为python中的字典?
EN

Stack Overflow用户
提问于 2021-10-23 18:15:33
回答 1查看 45关注 0票数 0

我有一个函数,它根据满足的条件语句调用不同的函数。该函数目前看起来如下所示。

代码语言:javascript
复制
def func1(var_a, var_b=1):
    return 'Some values'

def func2(var_c, var_d=2):
    return  'Some values'

def func3(var_e, var_f):
    return 'Some values'


def choose_function(a, b, c):
    if a == 'first_option':
        val = func1(b, c)
    elif a == 'second_option':
        val = func2(b, c)
    elif a == 'third_option':
        val = func3(b, c)

    return val

函数choose_function在将来可以有8-10个if else条件。有没有更好的方式来处理这类条件语句。

我是否可以将其转换为字典,该字典根据字典中作为键提供的变量a调用函数。更具体地说,我希望该函数如下所示

代码语言:javascript
复制
def choose_function(a, b, c):
    func_options ={
        'first_option': func1(b, c),
        'second_option': func2(b, c),
        'third_option': func3(b, c)
    }

    return func_options[a]

即使上面的函数工作正常,当有人提供字典键中不存在的值时,我如何处理这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-23 18:17:09

存储函数引用-定义字典时不要调用函数

代码语言:javascript
复制
def choose_function(a, b, c):
    func_options ={
        'first_option': func1,
        'second_option': func2,
        'third_option': func3
    }

    return func_options[a](b,c)

使用字典上的.get()方法处理无效选项

代码语言:javascript
复制
    return func_options.get(a, lambda *args, **kwargs: ...)(b,c)

用打印/缺省值等替换...

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69690852

复制
相关文章

相似问题

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