python避免冗长的多个 if 和 elif 分支技巧
  hp1ZPvtJvsa4 2023年11月05日 39 0

一、冗长的elif代码如下:

if ap.is_change:
            if next_ap.name == '设备采购':
                a.state = ApplicationState.wait_goods
            elif next_ap.name == '财务审批':
                a.state = ApplicationState.finance
            elif next_ap.name == '上级审批':
                a.state = ApplicationState.pending
            elif next_ap.name == 'IT审批':
                a.state = ApplicationState.it
        else:
            if next_ap.name == '上级审批':
                a.state = ApplicationState.pending
            elif next_ap.name == '财务审批':
                a.state = ApplicationState.finance
            elif next_ap.name == '采购审批':
                a.state = ApplicationState.order
            elif next_ap.name == '付款审批':
                a.state = ApplicationState.pay
            elif next_ap.name == '管理入库':
                a.state = ApplicationState.wait_goods
            elif next_ap.name == 'IT审批':
                a.state = ApplicationState.it


二、优化代码

这种方式将根据 next_ap.name 的值从映射字典中获取对应的状态,并将其赋给 a.state,避免了冗长的多个 if 和 elif 分支。这不仅使代码更简洁,还使得将来添加或修改状态时更加容易维护。

state_mapping = {
'设备采购': ApplicationState.wait_goods,
'财务审批': ApplicationState.finance,
'上级审批': ApplicationState.pending,
'IT审批': ApplicationState.it,
'采购审批': ApplicationState.order,
'付款审批': ApplicationState.pay,
'管理入库': ApplicationState.wait_goods
}

if ap.is_change:
if next_ap.name in state_mapping:
a.state = state_mapping[next_ap.name]
else:
if next_ap.name in state_mapping:
a.state = state_mapping[next_ap.name]


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
hp1ZPvtJvsa4