You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化功能标志切换代码?支持多标志扩展与控制台输入

功能标志管理优化实现

核心优化点

  • 用字典存储功能标志,新增标志只需添加字典键值对,无需修改逻辑,符合DRY原则
  • 统一输入处理逻辑,消除冗余分支
  • 修正拼写错误:toogle_flag改为toggle_flag,flase改为False
  • 支持灵活输入:none(全禁用)、all(全启用)、单个标志名、多个空格分隔的标志名

完整代码实现

# 初始化功能标志,新增标志直接在这里添加键值对即可
feature_flags = {
    "flag_a": False,
    "flag_b": False
}

def toggle_flag(flag_name):
    """切换指定标志的启用/禁用状态"""
    if flag_name in feature_flags:
        feature_flags[flag_name] = not feature_flags[flag_name]
        print(f"已切换 {flag_name} 状态为: {feature_flags[flag_name]}")
    else:
        print(f"警告:不存在标志 {flag_name}")

def update_flags(input_str):
    """根据输入字符串更新所有标志状态"""
    input_tokens = input_str.strip().lower().split()
    
    if not input_tokens:
        print("输入不能为空")
        return
    
    # 处理特殊指令
    if "none" in input_tokens:
        for flag in feature_flags:
            feature_flags[flag] = False
        print("所有标志已禁用")
        return
    if "all" in input_tokens:
        for flag in feature_flags:
            feature_flags[flag] = True
        print("所有标志已启用")
        return
    
    # 处理单个或多个标志切换
    for flag in input_tokens:
        toggle_flag(flag)

# 控制台交互逻辑
if __name__ == "__main__":
    while True:
        user_input = input("请输入标志指令(none/all/单个/多个标志,输入q退出):")
        if user_input.lower() == "q":
            print("退出程序")
            break
        update_flags(user_input)

代码说明

  1. 标志存储:用字典feature_flags统一管理,新增flag_c/flag_d只需在字典中添加"flag_c": False即可,无需修改任何逻辑代码
  2. 输入处理:将输入字符串转为小写并拆分,统一处理不同输入格式
  3. 特殊指令处理:none和all直接遍历字典批量设置状态,避免重复代码
  4. 切换逻辑:单独封装toggle_flag函数,负责单个标志的状态切换,逻辑复用
  5. 交互循环:支持持续输入,输入q可退出程序

内容的提问来源于stack exchange,提问作者tech spam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:40:17