Python命令处理系统优化:替代if-else执行对应命令
用字典映射重构命令处理系统
替代冗余if-else的最优方案是用字典建立命令字符串与对应处理函数的映射,这种方式符合开闭原则,后续新增命令只需要添加函数和字典条目,完全不用修改核心执行逻辑。
实现步骤示例
1. 定义命令处理函数
把每个命令对应的逻辑封装成独立函数,有参数需求的直接在函数中定义参数:
def handle_connect(host=None, port=None): # 连接服务器的逻辑 if host and port: print(f"正在连接到 {host}:{port}") else: print("请提供主机和端口,格式:/connect <host> <port>") def handle_disconnect(): # 断开连接的逻辑 print("正在与服务器断开连接") def handle_help(): # 帮助命令逻辑 print("支持的命令:/connect <host> <port>、/disconnect、/help")
2. 创建命令映射字典
将命令字符串作为键,对应处理函数作为值,建立一一映射:
command_handlers = { "/connect": handle_connect, "/disconnect": handle_disconnect, "/help": handle_help }
3. 解析输入并执行命令
拆分用户输入的命令与参数,从字典中匹配对应的处理函数并执行:
def process_command(input_str): parts = input_str.strip().split() if not parts: return command = parts[0] args = parts[1:] handler = command_handlers.get(command) if handler: try: handler(*args) except TypeError: print(f"命令 {command} 参数格式错误,请输入/help查看帮助") else: print(f"未知命令 {command},输入/help查看支持的命令") # 终端交互示例 while True: user_input = input("请输入命令:") if user_input == "/exit": break process_command(user_input)
方案优势
- 扩展性极强:新增命令只需编写对应的处理函数,再往
command_handlers字典中添加一行键值对即可,无需改动核心执行逻辑。 - 代码结构清晰:命令与逻辑一一绑定,比嵌套if-else可读性高得多。
- 便于维护:每个命令的逻辑独立封装,调试或修改单个命令不会影响其他功能。
内容的提问来源于stack exchange,提问作者Tele
相关产品推荐
相关产品推荐

