0

0

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

WBOY

WBOY

发布时间:2024-09-07 20:57:01

|

1300人浏览过

|

来源于dev.to

转载

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

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

为什么干净的代码很重要

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

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

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

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

示例

天工大模型
天工大模型

中国首个对标ChatGPT的双千亿级大语言模型

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

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

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

立即学习Python免费学习笔记(深入)”;

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 代码。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1030

2023.08.02

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

241

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

150

2025.10.17

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号