如何将嵌套的 if/else 函数调用转换为 python 中的字典?
How to convert nested if/else function calls to a dictionary in python?
我有一个函数,它根据满足的条件语句调用不同的函数。该函数目前看起来像这样。
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条件。有没有更pythonic的方式来处理这类条件语句。
我可以将其转换为字典,根据字典中作为键提供的变量 a
调用函数吗?更具体地说,我希望函数如下所示
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]
即使上述功能正常工作,当有人提供字典键中不存在的值时,我该如何处理这种情况?
存储函数引用 - 定义字典时不要调用函数
def choose_function(a, b, c):
func_options ={
'first_option': func1,
'second_option': func2,
'third_option': func3
}
return func_options[a](b,c)
使用字典的 .get()
方法处理无效选项
return func_options.get(a, lambda *args, **kwargs: ...)(b,c)
用 print/default 值等替换 ...
我有一个函数,它根据满足的条件语句调用不同的函数。该函数目前看起来像这样。
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条件。有没有更pythonic的方式来处理这类条件语句。
我可以将其转换为字典,根据字典中作为键提供的变量 a
调用函数吗?更具体地说,我希望函数如下所示
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]
即使上述功能正常工作,当有人提供字典键中不存在的值时,我该如何处理这种情况?
存储函数引用 - 定义字典时不要调用函数
def choose_function(a, b, c):
func_options ={
'first_option': func1,
'second_option': func2,
'third_option': func3
}
return func_options[a](b,c)
使用字典的 .get()
方法处理无效选项
return func_options.get(a, lambda *args, **kwargs: ...)(b,c)
用 print/default 值等替换 ...