如何在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
相关产品推荐
相关产品推荐

