编写简洁易读的 Python 代码:示例和技巧
作者:互联网
作为 Python 开发人员,编写干净的代码是一项需要掌握的重要技能。它不仅使您的代码更易于阅读和维护,而且还可以帮助您避免错误并提高软件的整体性能。以下是使用 Python 编写干净代码的一些技巧:
- 使用描述性和有意义的变量名:为变量选择清晰和描述性的名称是提高代码可读性的最重要的事情之一。不要使用缩写或单个字母,而是尝试选择能够准确描述变量用途的名称。例如,您可以使用or代替
n
代表计数的变量。这将使其他人(或未来的你)更容易理解代码在做什么,而不必不断地返回代码来破译每个变量代表什么。count
num_items
例如,考虑以下代码:
# 错误的变量名
for i in range(10):
n = i * 2
print(n)
# range(10) 中 i 的好变量名:
doubled_number = i * 2
print(doubled_number)
在第一个示例中,并不能立即清楚变量n
代表什么。是计数吗?一共?在第二个例子中,变量doubled_number
清楚地描述了值代表什么,使代码更容易理解。
- 有效使用空格:正确使用空格可以通过视觉上分隔不同的代码块并使其更易于扫描,从而有助于提高代码的可读性。使用空行分隔不同的代码部分,并使用缩进显示代码的结构。例如,您可以使用空行来分隔不同的函数或指示循环的开始和结束。您还可以使用缩进来表明代码块属于
if
语句或for
循环。
例如,考虑以下代码:
# 错误使用空格
def calculate_total(items):
total = 0
for item in items:
total += item.price
return total
# 善用空格
def calculate_total(items):
total = 0
for item in items:
total += item.price
return total
在第一个示例中,没有缩进来显示代码的结构,并且缺少空行使得很难在视觉上分隔不同的代码部分。在第二个示例中,缩进清楚地显示了代码的结构,空行有助于在视觉上分隔函数的不同部分。
通过有效地使用空格,可以使代码更易于阅读和理解,从长远来看可以节省时间和精力。
- 遵循 PEP 8:PEP 8 是 Python 的官方风格指南,它包括一组以一致和可读的方式格式化代码的建议。一些准则包括使用四个空格进行缩进、将行长度限制为 79 个字符以及使用小写字母和下划线作为变量名称。通过遵循这些准则,您可以帮助使您的代码更加一致且更易于阅读。
例如,考虑以下代码:
# 违反 PEP 8 准则
def CalculateTotal(items):
Total = 0
for item in items:
Total += item.Price
return Total
# 遵循 PEP 8 指南
def calculate_total(items):
total = 0
for item in items:
total += item.price
return total
在第一个示例中,函数名、变量名和属性名都使用大写字母,这都违反了 PEP 8 准则。在第二个示例中,名称全部小写并使用下划线,这遵循 PEP 8 准则。
- 使用函数和模块:通过使用函数和模块将代码分成更小的块有助于使其更有条理和更易于阅读。函数应该被定义为完成一项特定的任务,并且它们应该有一个清晰的描述性名称来表明它们的作用。另一方面,模块可用于组织相关的函数和变量。通过将代码分成更小的块并以这种方式组织,您可以更轻松地查找和重用特定代码段。
例如,考虑以下代码:
# 错误组织
def calculate_total(items):
total = 0
for item in items:
total += item.price
return total
def calculate_discount(total, discount_percentage):
返回总计 * (1 — discount_percentage)
# 好的组织
def calculate_total(items):
total = 0
for item in items:
total += item.price
return total
def apply_discount(total, discount_percentage):
返回总计 * (1 — discount_percentage)
在第一个示例中,函数calculate_discount
没有清楚地表明它的作用,并且在calculate_total
函数的上下文中也不一定有意义。在第二个示例中,函数apply_discount
清楚地表明了它的作用以及它与calculate_total
函数的关系。
- 记录你的代码:适当的文档对于让你的代码被其他人(以及未来的你)理解是很重要的。使用注释来解释您的代码的用途以及您所做的任何不明显的选择。您还可以使用文档字符串为函数和模块提供更详细的文档。Docstrings 是出现在函数或模块开头的字符串,并提供代码功能及其使用方式的摘要
# 单元测试
def test_calculate_total():
items = [Item(price=10), Item(price=20)]
total = calculate_total(items)
assert total == 30
这个测试函数创建一个Item
价格为 10 和 20 的对象列表,然后调用该calculate_total
函数来计算总价。然后它使用一个assert
语句来验证计算出的总数是否等于 30。如果该assert
语句的计算结果为True
,则测试将通过。如果它的计算结果为False
,则测试将失败并显示一条错误消息。
像这样的单元测试对于测试单个函数或小段代码很有用,以确保它们按预期工作。通过编写和运行一套单元测试,您可以在开发过程的早期发现错误和其他问题,从长远来看可以节省时间和精力。
- 测试您的代码:测试您的代码是开发过程中的一个重要步骤,因为它可以帮助您发现错误并确保您的代码按预期工作。您可以使用单元测试来测试单个功能和模块,并使用集成测试来测试代码的不同部分如何协同工作。通过测试您的代码,您可以尽早发现问题并从长远来看节省时间和精力。