Python中如何重构存在不同判断条件的大量if else语句?
优化方案
你这个场景是基于多个布尔变量的组合状态匹配对应值,最适合用状态映射表的方式优化,完全可以替代所有if-else分支,后续新增状态组合只需要在映射表里加条目就行,可读性和可维护性都更高。
优化后代码
date1 = '' date2 = '' name = '' # 构造状态-查询映射表,key为(date1是否为真, date2是否为真, name是否为真)的元组 query_map = { (True, True, True): 'query 1', (True, True, False): 'query 2', (True, False, True): 'query 3', } # 直接按当前变量的布尔状态查表,没匹配到就返回默认值 query = query_map.get((bool(date1), bool(date2), bool(name)), 'query default')
方案优势
- 无冗余分支判断,逻辑直观,所有状态和对应返回值的映射关系一目了然
- 后续新增条件组合无需新增
elif分支,直接在query_map中添加对应键值对即可 - 无需重复编写变量判断逻辑,降低手写分支时出现条件遗漏、拼写错误的概率
如果实际场景变量更多,也可以把这个逻辑封装成函数,只需要传入变量列表就能自动匹配对应值,适配性更强。
内容的提问来源于stack exchange,提问作者nikan
相关产品推荐
相关产品推荐

