Python中如何将多if-else判断块重构为独立的新函数?
重构实现方案
方案1:抽离独立判断函数(常规写法)
直接将判断逻辑封装为独立函数,后续新增elif分支直接在该函数内添加即可,可读性强:
# 抽离出的独立判断函数 def get_date_event(date: str, start_date_lst: list, end_date_lst: list) -> dict: if date in start_date_lst: return {"event": "start_date", "date": "date1"} elif date in end_date_lst: return {"event": "end_date", "date": "date2"} # 后续新增分支直接补充elif即可 return {} # 改造后的原有helper函数 def helper() -> dict: start_date_lst = get_start_date_lst() end_date_lst = get_end_date() return get_date_event(date, start_date_lst, end_date_lst)
- 提示:如果你的代码中
date是全局可访问的变量,可自行调整get_date_event的参数列表,无需传入date。
方案2:映射配置写法(适配多分支场景)
匹配你参考的用映射替代if-else的思路,由于你的场景是条件判断而非等值匹配,我们使用「条件+返回值」的映射列表实现,新增分支仅需添加配置项,无需修改逻辑代码:
# 抽离出的独立判断函数 def get_date_event(date: str, start_date_lst: list, end_date_lst: list) -> dict: # 按匹配优先级配置条件和返回值,新增分支直接加元素即可 event_config = [ (lambda d: d in start_date_lst, {"event": "start_date", "date": "date1"}), (lambda d: d in end_date_lst, {"event": "end_date", "date": "date2"}), # 新增分支示例:(lambda d: d in holiday_list, {"event": "holiday", "date": "date3"}) ] for condition, result in event_config: if condition(date): return result return {} # 改造后的原有helper函数 def helper() -> dict: start_date_lst = get_start_date_lst() end_date_lst = get_end_date() return get_date_event(date, start_date_lst, end_date_lst)
补充说明:如果后续新增分支数量不多,原有if-elif写法的可读性和执行效率反而更高,无需强行使用映射方案。
内容的提问来源于stack exchange,提问作者PercySherlock
相关产品推荐
相关产品推荐

