Pythonic检查逻辑的方法

时间:2012-05-18 05:54:57

标签: python algorithm coding-style

到目前为止,我发现在许多情况下,用于检查业务逻辑或任何其他逻辑的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检查的长块?

感谢。

2 个答案:

答案 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()