Python是当今最受欢迎的编程语言之一。令人震惊的是, Python在顶级编程语言列表中超过了Java ,现在是研究最多的语言!它是仅次于 JavaScript 的第二大最常用的语言,并且正在慢慢击败竞争对手以名列前茅。它被广泛用于各个领域,例如通过 Django 和 Flask 等流行框架进行 Web 开发、Web 抓取、自动化、系统管理、DevOps、测试、网络编程、数据分析、数据科学、机器学习和人工智能。事实上,当谈到与数据相关的技术时,人们首先想到的语言是Python!
除了由于易于学习而成为初学者大量使用的语言外,它还拥有巨大的社区支持和广泛的文档。但是很多人在从Java、C、C++、JavaScript 等其他语言切换时,发现遵循在Python编写干净代码应该采用的最佳实践有点困难。干净的代码更易于阅读和理解、调试和优雅。所以今天我们将详细讨论所有这些,因此您将更好地了解它们。让我们开始吧!
良好的文档
始终建议将可读注释合并到您的代码中。这使程序易于理解。即使是一个复杂的程序也可以分解成多个部分,并因为注释而被理解。 Python有两种类型的注释:
- 单行注释:这些类型的注释跨越一行文本。它们以井号 (#)开头,并在行结束时自动终止。
- 多行注释:它们跨越多行文本(两行或更多行),非常适合在解释代码块时使用。这些类型的注释以三引号 (“‘)开头和结尾。它更像是一个文本常量,也可用于将字符串分配给变量。在少数情况下,这可能会导致错误,因此如果注释有多于一行,则应为每一行注释使用哈希。
要了解有关注释的更多信息,必须阅读: Python的注释
干净的压痕
与 C++、 Java等其他语言不同, Python依赖于空格或制表符缩进,而不是大括号指定的代码块。 Python的每个语句前面都有一个空格、双空格或制表符。您不能在一个地方使用制表符,而在另一个地方使用空格,因为缩进需要在整个代码中保持一致。这告诉Python您正在开始一个新的代码块。下面提供了一些Python缩进的示例:
# an example of if-else with tab indentation
if (condition 1):
# executed when condition is True
else:
# executed when condition is False
# an example of for loop with nested if-else and double space indentation
for i in sequence:
if (condidition 1):
# execute outer if block code
if (condition 2):
# execute nested if code
else:
# execute outer else block code
要了解有关缩进的更多信息,必须阅读: Python的缩进
使用虚拟环境
Python中的虚拟环境是项目的一种沙盒区域。在这种环境中,您将安装的任何库和包都将与安装在环境之外的库和包明显隔离,例如操作系统或其他虚拟环境。您可以在一个时间点拥有多个虚拟环境,建议您在每次处理不同或新项目时都使用这些环境。这有助于分离依赖项并有助于轻松共享代码。下次有人想要运行您的软件时,您可以发送需求文件(包含该特定项目的所有已安装包和库),而不是让他们一个一个地安装库。这可以使用freeze命令完成,如下所示:
pip freeze > requirements.txt
此命令列出所有已安装的软件包并将它们输出到 requirements.txt 文本文件中。下次有人安装它时,他们可以运行以下命令:
pip install -r requirements.txt
它递归地安装依赖项,而无需手动一一键入它们进行安装。
要了解有关虚拟环境的更多信息,必须阅读: Python的虚拟环境
模块化代码
Python开发人员严格遵循 DRY 原则,即不要重复自己。这意味着如果您想多次完成一项任务,而不是编写冗余代码。这不仅意味着编写函数来执行重复性任务,还意味着制作模块。模块更像是一个代码库,通常是一个包含要在Python程序中实现的代码的文件。 Python社区非常庞大,许多开发人员已经实现了涉及经常使用的代码的模块。您可以制作自己的模块来执行特定任务!因此,无需重新发明轮子并从头开始编写代码,您只需导入模块并使用其功能即可。这是通过使用import关键字完成的:
# importing regular expression package
import re
# using it in your code
regex = re.compile(r'pattern')
# importing tensorflow with an alias that makes
# the usage concise
import tensorflow as tf
要阅读有关模块的更多信息,请访问: Python的模块
有意义的变量名和函数名
Python语言在命名变量和函数时遵循蛇形案例。因此,在遵循驼峰命名约定的任何其他语言中命名为FooBar的变量在Python命名为foo_bar 。如果您使用驼峰式大小写或扁平式大小写, Python不会抛出错误,但这不是我们想要的。除了变量名, Python的函数名也遵循蛇形大小写命名约定。
“Pythonic”代码
在Python实现特定任务有很多独特的方法。这些是有助于缩短代码并使其看起来优雅的简洁方法。让我们一一看看它们。
- 列表推导式:这是一种在一行中创建列表的复杂方法。我们可以在方括号内创建一个列表,而不是在循环内显式使用赋值,并在其中定义循环。要阅读有关列表推导式的更多信息,必须阅读: Python的列表推导式。
- 交换变量:在Python交换变量时,您可以在一行代码中完成,而不是使用临时变量和其他奇怪的方式(添加或分割变量)。例如,交换两个变量 a 和 b: a, b = b, a 。这是 Python 交换变量的方式!
- 切片:用于切出列表或字符串的特定部分。当您需要从较大的列表或字符串提取较小的列表或字符串时,它非常有用,并且可以使用冒号作为初始变量和最终变量之间的分隔符来实现。您甚至可以保留开始值或结束值。要阅读有关切片的更多信息,必须阅读: Python的切片。
我们已经讨论了您可以在Python代码中采用的大多数方法,使其看起来优雅而清晰。这些还有助于轻松调试代码并使其更具可读性。