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

如何在Python循环中应用DRY原则消除重复的异常抛出代码?

如何简化Python中重复的raise语句以遵循DRY原则?

当然可以简化!你的代码里重复的raise ValueError(f"This is my error !")完全可以通过合并判断逻辑来消除,完美契合DRY原则。

先看你原来的代码逻辑:

for key, value in my_dictionary.items():
    if "," in value:
        if key != value:
            raise ValueError(f"This is my error !")
    else:
        if key != value + ",00":
            raise ValueError(f"This is my error !")

核心问题是两个分支里的判断逻辑本质都是验证key是否等于某个预期值,只是预期值的生成规则不同。我们可以先统一计算出预期值,再做一次判断,这样就能把重复的raise语句只写一次:

for key, value in my_dictionary.items():
    # 根据value是否包含逗号,生成对应的预期值
    expected_key = value if "," in value else f"{value},00"
    # 统一做一次判断,不符合就抛出异常
    if key != expected_key:
        raise ValueError("This is my error!")

为什么你尝试的for/else没奏效?

for/else的逻辑是当循环正常执行完毕(没有被break中断)时,才执行else块里的代码,这和你当前需要在循环的每一次迭代中,根据条件抛出异常的场景不匹配,所以用在这里确实解决不了问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:04:03