1. 逻辑合并法则

    • 将多重条件分支合并为单一逻辑表达式
    • 使用 and/or 短路特性简化判断
    • 示例:if A and B: ... elif C and D: ... → return (A and B) or (C and D)
  2. 冗余消除原则

    • 移除隐含关系的重复判断
    • 示例:x%100==0 and x%400==0 → x%400==0(能被400整除必然能被100整除)
  3. 德摩根定律应用

    • 转换条件表达式形式提升可读性
    • 示例:not (A or B) → not A and not B
  4. 结构扁平化

    • 用单行返回替代多级条件分支
    • 示例:用 return 条件表达式 替代 if...elif...else

优化实现代码

def leap_year(year):
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)

优化对比分析

特性 原代码 优化后代码
代码行数 5行 (含多个分支) 1行 (单表达式)
条件判断次数 最多执行2次条件判断 固定1次 完整判断
可读性 需逐行理解分支逻辑 直接体现闰年定义规则
执行效率 多次模运算 4次模运算 (无重复计算)
扩展性 修改规则需调整多个分支 仅修改表达式

关键优化步骤解析

  1. 合并条件判断
    原代码逻辑:

    if (能被100整除 且 能被400整除) → 闰年
    elif (不能被100整除 但 能被4整除) → 闰年
    else → 非闰年
    

    合并为数学表达式:
    能被4整除 并且 (不是整百年是整百年但能被400整除)

  2. 应用短路特性

    • year%4 !=0 时,立即返回False,避免后续计算
    • year%100 !=0 为真时,直接通过验证,无需检查year%400
  3. 符合标准定义
    优化后的代码直接对应国际标准闰年规则:

    A year is a leap year if:

    1. It is divisible by 4,
    2. Unless it is divisible by 100,
    3. But still a leap year if divisible by 400

延伸优化方向

若需进一步提升可读性,可采用语义化变量:

def leap_year(year):
    is_div4 = (year % 4 == 0)
    is_century = (year % 100 == 0)
    is_exceptional_century = (year % 400 == 0)
    return is_div4 and (not is_century or is_exceptional_century)

这种写法:
✅ 明确展示闰年判断的三个要素
✅ 变量名自解释业务逻辑
✅ 保持单返回点的简洁性