- 传统if-else的痛点
在编程中,我们经常需要根据不同条件执行不同操作,例如:
if action == "create":
create_item()
elif action == "update":
update_item()
elif action == "delete":
delete_item()
else:
raise ValueError("Invalid action")
这种写法虽然直观,但随着条件增多,代码会变得冗长且难以维护。
- 字典映射:更优雅的替代方案
Python等语言支持用字典(dict)存储函数或值映射,使代码更简洁:
actions = {
"create": create_item,
"update": update_item,
"delete": delete_item,
}
def handle_action(action):
func = actions.get(action)
if func:
func()
else:
raise ValueError("Invalid action")
优势:
✅ 代码更短:无需多层if-else
✅ 易于扩展:新增条件只需修改字典
✅ 可读性更强:逻辑清晰,一目了然
- 进阶用法:结合lambda与默认值
字典技术还可以结合lambda实现动态逻辑,或使用defaultdict处理默认情况:
from collections import defaultdict
handlers = defaultdict(
lambda: lambda: print("Unknown action"),
{"save": save_data, "load": load_data}
)
handlers[user_input]() # 自动处理未知输入
- 适用场景与注意事项
适合:固定映射关系(如命令模式、状态机)
避免:复杂条件依赖(如嵌套判断)
替代方案:策略模式、模式匹配(Python 3.10+的match-case)
601

被折叠的 条评论
为什么被折叠?



