到目前为止,我在许多情况下发现用于检查业务逻辑或任何其他逻辑的 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 检查?
谢谢。
最常见的方式就是一行 elif,这并没有什么错,事实上,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
行,但如果您只需要检查相等关系和一般情况,它会很好地工作,特别是如果您需要这样做不止一次。
try except case 可以通过在字典上显式调用 get 来替换,使用通用函数作为 default
参数:
functions.get(user_input,do_correct)()
如果这能让你的船漂浮起来。