您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

编写更简洁的Python代码的5个技巧

发表于:2020-08-06 作者:闻数起舞 来源:今日头条

许多人刚开始学习编程时会选择Python。 Python确实是初学者友好的。 当您按照其官方网站上的下载和安装说明进行操作时,很快就可以编写" Hello World"程序。

当您了解更多关于Python的知识时,您可能会着迷于它使用不同方法实现相同功能的灵活性。 但是,迟早您会发现某些解决方案比其他解决方案更简洁。 更重要的是,从长远来看,更简洁的代码往往更易于阅读和维护。

当然,有很多方法可以用Python编写简洁的代码。 在本文中,我想分享五个技巧,这些技巧在日常Python项目中特别有用。 为了说明为什么这些技巧可以提供更简洁的解决方案,在每个部分中,为了比较目的,我都会提供替代的,通常更长的解决方案。

1.列表,字典和集合理解

列表理解是许多Python程序员最喜欢的功能之一。 这是从迭代器创建列表对象的非常简洁的方法。 基本语法为[可迭代的x表达式]。 让我们看一些示例以了解其用法。

如您所见,在不使用列表推导的情况下,我们必须创建一个空列表,并通过运行for循环来添加每个数字的平方,这需要三行代码。 相比之下,我们只使用一行代码就可以通过列表理解来构建相同的正方形列表。 那不是很酷吗?

除了列表理解之外,还有字典和集合理解。 字典理解具有以下基本语法{key_expr:用于iterable中的x的value_expr},而对于集合理解,其基本语法是{用于x中的iterable的表达式}。 让我们在下面看一些简单的例子。 与列表理解示例类似,将花费多行代码来构建所需的字典并进行设置,而无需使用理解技术。

2.将元组命名为数据结构

我们知道元组对于存储一些相关数据很有用。 但是,使用它们并不是很方便,尤其是在访问特定元素方面,因为我们必须记住顺序并使用特定元素的正确索引。

尽管如果不想使用元组,我们可以建立一个自定义类来管理相关数据,但是namedtuple数据类型可以是非常有用的轻量级数据结构。 通过集合模块可用,namedtuple数据类型采用以下基本语法:namedtuple(Typename,field_names)。 语法虽然不太简单,但实际上从概念上很容易理解。

让我们看一些相关的例子。 理想的功能是创建一个数据结构,该结构可以存储学生的信息,包括姓名,性别和学生ID号码。

如您所知,使用namedtuple,我们可以使用更简洁的代码编写轻量级的数据结构。 当然,应该注意,自定义类为您提供了可以操纵的更多功能。 但是,如果您的目的只是创建用于数据存储和检索目的的数据结构,则绝对可以考虑使用namedtuple。

3.使用enumerate()和zip()进行迭代

编码的一项重要原则是DRY,它代表"不要重复自己"。 当我们处理一系列数据(例如数字列表)时,这是一项常见的任务,我们需要对列表中的每个数字执行相同的操作。 为了避免重复相同的代码,我们可以使用for循环来运行整个列表的迭代。

当我们迭代列表或任何序列时,有时我们还需要知道项目在序列中的位置。 有两种方法可以做到这一点。 让我们看看它们是什么。

如您所见,通过使用内置函数enumerate(),我们可以轻松地访问序列中的索引和元素,这比第一次迭代更简洁。 更重要的是,它可以设置一个起始数字进行计数。 在上面的示例中,我们将其设置为1。

除了enumerate()函数外,zip()函数在迭代中也很有用。 此函数能够从多个可迭代对象创建元组,而无需显式创建这些可迭代对象的复合可迭代对象。 听起来有些混乱,但是我们可以在下面的示例中看到它的用法。

基本上,zip()函数的作用是在每次迭代中从可迭代对象中获取每个元素,以依次形成一个元组。 该代码比冗长的代码更简洁,可读性更好,不是吗?

4.使用f字符串格式化字符串

字符串是一种基本的数据类型,我们几乎在任何地方都使用它们。 字符串的一项基本应用是将它们以某种格式使用。 有几种格式化字符串的方法,为此,我想介绍一下f字符串。

简而言之,f字符串是内插的字符串文字,使用字母f(或F)作为字符串文字的前缀。 为了编写简洁的代码,我将仅向您展示两个首选f字符串的用例。

  • 显示变量。 最基本的用法是显示一些变量的值,以便在开发过程中进行调试。 如果使用传统的format()方法,则需要更长的时间。
  • 连接变量/连接字符串。 f字符串不是直接使用+符号和字符串的join()方法,而是用于字符串串联的非常简单的方法,并且具有优质的可读性。 实际用途包括构造文件路径,如下例所示。

5. Lambda函数

Lambda函数是Python中的匿名函数,通常在需要小的操作的地方使用。 Lambda函数可以采用一个或多个参数,并且具有单个表达式,并且具有以下语法Lambda参数:expression。

我将仅使用内置的sorted()函数来演示lambda函数的用法。 具体来说,sorted()函数使用key参数指定的key函数对可迭代对象进行排序。 我将向您展示,我们可以将lambda函数用作键参数,而不是使用def关键字声明常规函数。

结论

在本文中,我们回顾了五个有用的技巧,使我们可以编写更简洁的Python代码。 通过减少代码编写,实际上提高了可读性和可维护性-几乎总是如此。

但是,请记住,简洁的代码不应导致任何歧义或混乱。 您必须在简洁和可读性之间找到良好的平衡。 如果它们发生冲突,即使有时需要更多代码,我们也应首先尊重可读性。

谢谢阅读。