当前位置:首页 > 文章列表 > 文章 > python教程 > 如何用 Python 编写干净的代码 - 最佳实践指南

如何用 Python 编写干净的代码 - 最佳实践指南

来源:dev.to 2024-11-24 19:40:04 0浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个文章开发实战,手把手教大家学习《如何用 Python 编写干净的代码 - 最佳实践指南》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

如何用 Python 编写干净的代码 - 最佳实践指南

编写 python 代码时,必须使其干净且易于阅读。干净的代码意味着您的代码组织良好、易于理解且易于维护。在本指南中,我们将分享最佳技巧,帮助您用 python 编写干净的代码,无论您是初学者还是经验丰富的开发人员。

为什么干净的代码很重要

编写干净的代码至关重要,原因有很多:

  • 可读性:干净的代码易于阅读,这有助于其他开发人员快速理解您的代码。
  • 可维护性:如果您的代码干净,则更容易更新、调试和改进。
  • 协作:干净的代码对于团队合作至关重要,尤其是在与他人共享代码或处理大型项目时。
  • 错误预防:当你的代码干净且有组织时,你就不太可能引入错误。 现在,让我们探索一些最佳实践,帮助您用 python 编写更简洁的代码。

1.使用有意义的变量和函数名称

提高代码可读性的最简单方法之一是为变量和函数使用清晰且有意义的名称。避免使用单字母或神秘的名称,例如 x、y 或 foo。

示例

# bad example
def calc(x, y):
    return x + y

# good example
def calculate_total_price(item_price, tax):
    return item_price + tax

在第二个例子中,只需查看函数名和变量名就很容易理解函数的作用。

2.遵循 pep 8 风格指南

pep 8 是 python 的官方风格指南,提供了编写干净且可读的代码的约定。一些关键的 pep 8 建议包括:

  • 缩进:每个缩进级别使用 4 个空格。
  • 行长度:保持行少于 79 个字符。
  • 空格:在运算符周围和逗号后使用空格。
  • 注释:添加注释来解释代码的复杂部分。 遵循 pep 8 可确保您的代码符合 python 的社区标准。

示例

# pep 8 example
def calculate_discounted_price(price, discount):
    """calculate the final price after applying the discount."""
    discounted_amount = price * (discount / 100)
    final_price = price - discounted_amount
    return final_price

3. 编写模块化代码

将代码分解为更小的、可管理的函数。每个函数应该执行一项特定任务,使其更易于阅读、测试和调试。

示例

# bad example
def process_order(customer, items):
    total_price = 0
    for item in items:
        total_price += item['price']
    if total_price > 100:
        discount = total_price * 0.1
        total_price -= discount
    # send email
    print(f"order confirmed for {customer['name']}")
    return total_price

# good example
def calculate_total_price(items):
    return sum(item['price'] for item in items)

def apply_discount(total_price):
    if total_price > 100:
        return total_price * 0.9
    return total_price

def send_confirmation_email(customer):
    print(f"order confirmed for {customer['name']}")

def process_order(customer, items):
    total_price = calculate_total_price(items)
    total_price = apply_discount(total_price)
    send_confirmation_email(customer)
    return total_price

在改进的示例中,代码被拆分为更小的函数,使其更易于理解和维护。

4. 使用列表推导式来简化

python 中的列表推导式提供了一种创建列表的简洁方法。使用它们可以使您的代码更干净、更具可读性。

示例

# without list comprehension
squares = []
for x in range(10):
    squares.append(x ** 2)

# with list comprehension
squares = [x ** 2 for x in range(10)]

第二个示例更短且更易于阅读。

5.避免硬编码值

避免直接在代码中对值进行硬编码。相反,请使用常量或配置文件。这使您的代码更加灵活且更易于更新。

示例

# bad example
def calculate_discount(price):
    return price * 0.1  # discount is hardcoded

# good example
discount_rate = 0.1

def calculate_discount(price):
    return price * discount_rate

在第二个示例中,折扣率存储在常量中,以便在需要时更容易更改。

6. 添加注释和文档字符串

虽然干净的代码应该是不言自明的,但添加注释和文档字符串可以帮助解释复杂函数或算法的目的。

  • 评论:解释为什么使用特定方法。
  • docstrings:描述函数的作用及其参数。 示例
def find_largest_number(numbers):
    """
    find the largest number in a list.

    args:
    numbers (list): a list of numbers.

    returns:
    int: the largest number.
    """
    return max(numbers)

文档字符串可帮助其他开发人员了解如何使用该函数,而无需阅读整个代码。

7. 保持代码干燥(不要重复)

避免重复代码。如果您发现重复的模式,请尝试重构代码以重用函数或类。这将使您的代码更易于维护并减少出错的机会。

示例

# bad example
def get_full_name1(first_name, last_name):
    return first_name + " " + last_name

def get_full_name2(first_name, last_name):
    return first_name + " " + last_name

# good example
def get_full_name(first_name, last_name):
    return first_name + " " + last_name

8. 优雅地处理错误

始终使用 try 和 except 块来处理异常,以防止程序崩溃。您还应该提供信息丰富的错误消息以使调试更容易。

示例

# bad example
def divide_numbers(a, b):
    return a / b

# good example
def divide_numbers(a, b):
    try:
        return a / b
    except zerodivisionerror:
        return "error: cannot divide by zero"

第二个示例可防止崩溃并提供有用的错误消息。

9. 使用 f 字符串进行格式化

python 3.6 引入了 f-string,这是一种简单易读的字符串格式设置方法。它们比旧的字符串格式化方法干净得多。

示例

# old way
name = "alice"
greeting = "hello, %s!" % name

# with f-strings
greeting = f"hello, {name}!"

f 字符串使您的代码更易于阅读和维护。

10.使用有意义的导入

仅导入必要的模块和功能。避免使用通配符导入,例如 from module import *,因为它们会使命名空间变得混乱并使跟踪依赖项变得更加困难。

示例

# Bad example
from math import *

# Good example
from math import sqrt, pi

结论

用 python 编写干净的代码是一项宝贵的技能,可以帮助您创建可读、可维护且无错误的软件。通过遵循本指南中概述的最佳实践(使用有意义的名称、遵循 pep 8、保持代码模块化以及优雅地处理错误),您可以显着改善您的编码风格。

专注于可读性、简单性和一致性,您将能够顺利编写干净、专业的 python 代码。

以上就是《如何用 Python 编写干净的代码 - 最佳实践指南》的详细内容,更多关于的资料请关注golang学习网公众号!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
win8怎样在桌面显示我的电脑?win8怎样在桌面显示我的电脑?
上一篇
win8怎样在桌面显示我的电脑?
字节豆包大模型团队突破残差连接局限!预训练收敛最快加速80%
下一篇
字节豆包大模型团队突破残差连接局限!预训练收敛最快加速80%
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    23次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    35次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    37次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    47次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    40次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码