停止写作混乱的python:干净的代码速成课程

编写有效的python很容易。但是编写python干净,可读和可维护的?这就是这个速成课程的目的。

来源:KDnuggets
作者的图像|意识形态图

如果您已经在Python进行了编码一段时间,那么您可能已经掌握了基础知识,并构建了一些项目。现在,您正在查看您的代码思考:“这有效,但是...这并不是我在代码审查中自豪地展示的。”我们都去过那里。

但是,随着您进行编码,编写干净的代码变得与编写功能代码一样重要。在本文中,我编辑了可以帮助您从“它运行,不要触摸”到“这实际上可以维护”的实用技术。

🔗链接github上的代码

链接到GitHub上的代码

1。明确模型数据。不要传递dicts

字典在Python中是超级灵活的,这正是问题所在。当您在整个代码中传递原始词典时,您会诱使错别字,关键错误以及有关实际存在的数据的困惑。

而不是:

def process_user(user_dict):
    如果user_dict ['status'] =='active':#如果缺少'状态'怎么办?
        send_email(user_dict ['email'])#如果某些地方是'邮件'怎么办?
        
        #是“名称”,“ full_name”或“用户名”?谁知道!
        log_activity(f“处理{user_dict ['name']}”)

此代码不健壮,因为它假设没有验证的字典键。它没有针对错别字或丢失键的保护,这将在运行时导致keyError例外。也没有关于期望哪些领域的文件。

keyError

这样做:

从数据级导入数据级
从输入导入可选

@DataClass
班级用户:
    id:int
    电子邮件:str
    full_name:str
    状态:Str
    last_login:可选[dateTime] =无

def process_user(用户:用户):
    如果user.status =='active':
        send_email(user.email)
        log_activity(f“处理{user.full_name}”)

Python的@DataClass装饰器可为您提供清洁,明确的结构,并使用最少的样板。您的IDE现在可以为属性提供自动完成,如果缺少需要的字段,您将立即遇到错误。

@dataclass

带有枚举:

黑色