当前位置:首页>python>让我的代码减少40%的7个Python模式

让我的代码减少40%的7个Python模式

  • 2026-09-06 07:24:41
让我的代码减少40%的7个Python模式

很多工程师都经历过“代码越写越多、越写越难维护”的阶段。问题往往不在业务复杂,而在我们用复杂度对抗复杂度。 下面 7 个 Python 写法,不靠框架、不靠技巧堆砌,却能稳定减少重复逻辑,让代码更小、更清晰、更好扩展。

01用字典替代多层条件分支

痛点:一长串 if/elif 会把流程缠成一团,新类型一来就得改旧逻辑。

做法:用字典作为“分发表”,把分支变成可插拔函数。

收益:逻辑扁平化、扩展不动旧代码,测试边界更清晰。

HANDLERS = {    "admin": handle_admin,    "editor": handle_editor,    "viewer": handle_viewer,}return HANDLERS[user_type](user)

02数据类代替手写模型

痛点:大量 __init__ / __repr__ / __eq__ 只是机械重复。

做法:用 @dataclass 明确“这是数据,而非行为”。

收益:模型层更轻,表达更直接,减少样板代码。

from dataclasses import dataclass@dataclassclass User:    name: str    age: int    active: bool

03没有状态的类,用函数替代

痛点:很多类只有一个方法、没有状态,只是“函数套壳”。

做法:直接用函数表达行为。

收益:少一层抽象,降低心智负担,代码更透明。

def calculate_price(order):
    ...

04用早返回压平嵌套

痛点:嵌套越深,可读性越差,分支也越难维护。

做法:将失败路径提前返回,让主逻辑直线展开。

收益:结构更扁平,路径清楚,减少漏判。

def process(user):    if not user:        return None    if not user.active:        return None    if not user.has_permission:        return None    return do_work(user)

05用推导式替代“循环 + 条件”

痛点:常见的 for + if + append 让意图分散在多行。

做法:用列表/集合/字典推导式直接表达结果。

收益:语义集中、行数更短、bug 更少。

results = [u.email for u in users if u.active]

06组合优于继承

痛点:继承层级一深,就容易“牵一发而动全身”。

做法:用组合的方式组织权限、能力与行为。

收益:耦合更弱,复用更稳,减少脆弱基类问题。

class User:    def __init__(self, permissions):        self.permissions = permissionsdef can_edit(user):    return "edit" in user.permissions

07让 Python“响亮地失败”

痛点:过度防御性判断让代码充满“如果…否则…”。

做法:相信运行时与测试,让错误暴露在应该暴露的位置。

收益:分支更少,问题更早出现,测试更有价值。

value = data[key]  # 让 KeyError 直接暴露

08什么时候别用

🚫 可读性下降:为了“短”牺牲直观理解。

🚫 团队无共识:写法不统一会增加维护成本。

🚫 抽象过度:聪明但难懂,反而更危险。

✓结语

少写代码不是目标,少写“为复杂度买单的代码”才是。把注意力放在业务本身,系统会更稳定、团队也更轻松。

🔗 原文链接:

https://medium.com/the-pythonworld/7-python-patterns-that-eliminated-40-of-my-code-2b1036ba490c

最新文章

随机文章