编写更好的Python 代码需要遵循Python 社区制定的最佳实践和指南。遵守这些标准可以使您的代码更具可读性、可维护性和效率。
本文将展示一些技巧,帮助您编写更好的 Python 代码
PEP 8 是 Python 代码的官方风格指南。它提供了一组用于格式化代码的准则,例如如何缩进、如何使用空格以及如何命名变量。遵循这些准则将使您的代码更加一致且更易于阅读。下面为您提到一些。
Python PEP 8(Python 增强提案 8)提供了一些关于 Python 代码应该如何格式化或样式化的建议。如果你想编写 Pythonic 代码,你应该尝试遵循这些样式约定(简而言之,“pythonic”描述了一种编码风格,它利用 Python 的独特功能来编写可读且美观的代码)。
让我们看一下在编写代码时应该遵循的一些策略:
类名——如 PEP 8 中所述,所有类名都应以大写字母开头。如果名称中有两个词,请使用 Cap-Words 约定。这意味着您应该以大写字母开头每个单词。它们不应该是单词之间的空格
最大行长度——您的代码应该易于阅读,因此应避免不必要的长代码行。PEP 8 建议您的代码行不应超过 79 个字符。
编写可读代码的关键之一是使用描述性和有意义的变量名。这将使其他人更容易理解您的代码,并让您在稍后回过头来看您的代码时记住每个变量代表什么。
在 Python 中,我们为对象指定变量。
简单地说,变量是指向对象的指针。调用变量为我们提供了对对象的访问。在 Python 中,如果它们不会产生错误,我们可以创建不同类型的变量名。因为变量名不会导致错误并不意味着使用它是最佳实践。
由于变量用作对对象的引用,因此最好让变量的名称描述它们所持有的对象。例如,如果您有一个员工姓名列表,将变量命名为“x”可能方便又容易,但这不是好的做法。请参阅下面的代码:
尽管这段代码在没有地址的情况下执行,但它是一种糟糕的编程习惯,因为“x”没有指定变量持有的对象类型。如果您的脚本有很多代码,您将很难弄清楚“x”指向的对象变量是什么。
这种命名变量的方法使得调试程序变得困难。变量的名称应该试图识别它所指向的对象的类型。鉴于它标识了列表中的信息,名称“employee_names”作为变量名在很大程度上是不言自明的。它比名称“x”更具描述性。看下面的代码:
虽然注释对于解释复杂或令人困惑的代码很有用,但不要过度使用它们很重要。过多的注释会使您的代码混乱且难以阅读。相反,尝试通过使用清晰简洁的变量名称并编写干净且结构良好的代码来使您的代码不言自明。
以下示例说明了内联注释:
假设你有一个数字列表,你想返回所有可被 2 整除的数字;您可以使用 for 循环语句或列表理解。
让我们用代码来解释一下。我们将从一个 for 循环语句开始。
现在,让我们将此解决方案与列表推导一起应用。
你有没有注意到上面的列表理解只需要一行代码就可以完成同样的任务?
通过列表理解,我们不必生成空列表或使用列表方法 append()。列表理解**简洁,**使我们的代码更具可读性。在大多数情况下,它也比常规的 for 循环语句更高效
如果你有一个要连接的字符串列表,你有两种选择——你可以使用连接“+”运算符或字符串方法“join”。
在下面的代码中,我们使用“+”运算符将字符串列表组合在一起
当我们遍历列表时,在上面的代码中应用“+”运算符将字符串列表连接到 new_string 变量。为了合并字符串之间的空格,我们在末尾连接一个空字符串(“”)。
您可以看到代码运行良好。然而,这种方法的内存效率不高。
这是因为字符串的种类。由于字符串是不可变的,因此在创建新对象时尝试组合它们的结果。每次我们调用“+”运算符,都必须为创建的对象分配内存。这使得该方法变得无趣,并且对于较大的字符串会变慢。
然而, join() 方法并非如此。这是因为 join() 方法只为最终对象分配内存。这使得此方法在连接更大的字符串时**更快。**因此,下面的代码通常更快、更简洁。
与使用描述性变量名类似,使用描述性函数和方法名可以使您的代码更易于理解和维护。如果你有很长或很复杂的函数,如果没有上下文就很难理解,这一点尤其重要
通过遵循这些提示,您可以编写更易于阅读、维护和理解的更好的 Python 代码。请记住始终努力使代码简单明了,并遵循既定的最佳实践和指南。