0

到目前为止,在许多情况下,我发现用于检查业务逻辑或任何其他逻辑的 python 代码如下所示(简化):

user_input = 100
if user_input == 100:
    do_something()
elif user_input > 100:
    do_sth_different()
else:
    do_correct()

当需要检查新的逻辑时,新的 python 程序员(像我一样)会在 elif 中添加一个新的块...

什么是 pythonic 方法来检查一堆逻辑而不使用大量 if else 检查?

谢谢。

4

2 回答 2

4

最常见的方法就是一行 elifs,这并没有什么问题,事实上,文档中说使用 elifs 作为开关的替代品。然而,另一种非常流行的方法是创建一个函数字典:

functions = {100:do_something,101:do_sth_different}
user_input = 100
try:
    functions[user_input]()
except KeyError:
    do_correct()

这不允许您使用给定的if user_input > 100行,但如果您只需要检查相等关系和一般情况,它会很好地工作,特别是如果您需要多次执行此操作。

try except case 可以通过在字典上显式调用 get 来替换,使用泛型函数作为default参数:

functions.get(user_input,do_correct)()

如果那会让你的船浮起来。

于 2012-05-18T06:06:29.467 回答
-1

除了您这样做的方式可能是最好的方式这一事实之外,您还可以将其写为:

user_input = 100

do_something() if user_input == 100 else
do_sth_different() if user_input > 100 else
do_correct()
于 2012-05-18T07:08:58.073 回答