作为 Python 开发人员,编写干净的代码是一项需要掌握的重要技能。它不仅使您的代码更易于阅读和维护,而且还可以帮助您避免错误并提高软件的整体性能。以下是使用 Python 编写干净代码的一些技巧:
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 准则
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
函数的关系。
# 单元测试
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
,则测试将失败并显示一条错误消息。
像这样的单元测试对于测试单个函数或小段代码很有用,以确保它们按预期工作。通过编写和运行一套单元测试,您可以在开发过程的早期发现错误和其他问题,从长远来看可以节省时间和精力。
标签:Python,编辑,管理,代码,数据,开发,icode9 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。