到目前为止,我发现在许多情况下,用于检查业务逻辑或任何其他逻辑的python代码如下所示(简化):
user_input = 100
if user_input == 100:
do_something()
elif user_input > 100:
do_sth_different()
else:
do_correct()
当需要检查一个新的逻辑时,新的python程序员(像我一样)只是在elif中添加一个新的bock ...
什么是pythonic方法来检查一堆逻辑而不使用if else检查的长块?
感谢。
答案 0 :(得分:4)
最常见的方式只是一系列精灵,并没有真正的错误,事实上,documentation说使用elifs替代开关。然而,另一种非常流行的方法是创建函数字典:
functions = {100:do_something,101:do_sth_different}
user_input = 100
try:
functions[user_input]()
except KeyError:
do_correct()
这不允许你给定的if user_input > 100
行,但是如果你只需要检查相等关系和一般情况,它就可以很好地解决,特别是如果你需要多次执行它。
可以使用您的泛型函数作为default
参数显式调用字典上的get来替换try except案例:
functions.get(user_input,do_correct)()
如果那漂浮在你的船上。
答案 1 :(得分:-1)
除了你这样做的方式可能是最好的方式,你也可以把它写成:
user_input = 100
do_something() if user_input == 100 else
do_sth_different() if user_input > 100 else
do_correct()