检查逻辑的 Pythonic 方法

标签 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 检查?

谢谢。

最佳答案

最常见的方式就是一行 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)()

如果这能让你的船漂浮起来。

关于检查逻辑的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647409/

相关文章:

Python Google Drive API - 获取我的云端硬盘文件夹的 ID

algorithm - 实现随机 ACO 算法

java - Java中的字符串比较顺序

css 和 js 文件 : keep minimum bytes or use many spaces, 选项卡和新行?

Python Jinja2 宏空白问题

python - 如何从命令行在 Python 中初始化 ctypes 数组

python - 查找组中添加的所有用户(reply_channels)(Django channel )

c++ - 使用最小操作将给定字符串转换为排序字符串

algorithm - 分而治之斐波那契程序的运行时间

c# - 使用 MVC3 将共享项(如菜单)的逻辑放在哪里?