Python 中下划线Underscores的四种使用场景

2023-12-29 16:55:36

Python 中下划线的四种使用场景(Four Usage Scenarios of Underscores in Python)

导言Introduction

Python 中的下划线Underscores有四种特殊用法。其中一些是为了提高代码可读性而约定俗成的。有些是我们必须知道的特殊功能。这四种情况是:

  • 分隔数字的位数 Separate digits of numbers
  • 用于忽略某些变量 Use to ignore some variable
  • 将最后一个表达式的值存储在解释器中 Store the last expression’s value in interpreter
  • 命名规则 Naming conventions

本篇文章将讨论所有这些下划线,以帮助您完全理解如何在 Python 中使用下划线underscores。

分隔数字的位数

有时,如果一个数字number太长,要数出这个数字有多少位数就很难,也很枯燥。例如,如果有一个变量 a=1000000000000a 中有多少个零?

幸运的是,Python 为我们提供了一种非常简单的方法,在整数integral、浮点数floating-point和复数complex字面量中使用下划线underscores作为数字分组的视觉分隔符visual separators。如果我们需要定义一个长数字,不要忘记使用下划线,这样会更方便。

a = 1_000_000_000_000
print(a)  # 1000000000000

上述 a=1_000_000_000_000 的说法与 a=1000000000000 完全相同。您想用哪种方式定义 a 呢?

用于忽略某些变量

有时,容器container(列表list/元组tuple等)中的部分值是无用的useless。我们可以使用下划线来underscore忽略ignore它们。

L = [1, 3, 5, 7]
a, _, b, _ = L
print(a, b)  # 1 5

如上面的代码所示,我们需要获取 L 的第一个和第三个值,并将它们赋值给变量 ab 。同时,第二个和最后一个值是无用的。我们只需使用 _ 忽略它们。

注意:这种用法只是一种惯例convention。我们可以使用任何其他名称来实现这一目的。但使用下划线underscore是最好的选择,可以避免歧义ambiguity并让其他开发人员容易理解。

在解释器中存储最后一个表达式的值

这是 Python 解释器的一个有趣的小技巧。我们可以使用一个下划线简单地获取最后一个表达式的值last expression’s value。

>>> 5+6
11
>>> _
11

命名约定

下划线常用于变量variable名、类class名和函数function名。例如

first_name = 'Zhang'

在定义变量 first_name 时,我们使用了 _ 使其更加易读。

除了在名称中间位置使用下划线underscores外,我们还应该知道四种特殊的命名模式:

  • 单前置下划线 Single Leading Underscore: _var
  • 双前置下划线 Double Leading Underscore: __var
  • 单个后置下划线 Single Trailing Underscore: var_
  • 双前置和后置下划线 Double Leading and Trailing Underscore: __var__

单/双前置下划线

在面向对象编程object-oriented programming中,有三种类型的类成员class members:

  • Public:类的公共成员可以从程序的任何部分访问。在 Python 中,所有不带下划线的成员变量和方法默认都是公共成员。
  • Protected:受保护成员可在同类或派生类中访问。我们使用单前置下划线将变量定义为受保护成员。
  • Private:私有成员只能在同一个类中访问。我们使用双前置下划线将变量定义为私有成员。
class Student:
    def __init__(self, name, age, grade):
        self.name = name  # public member
        self._age = age  # protected member
        self.__grade = grade  # private member

关于前置下划线有两个提示:

  • 单前置下划线只是一种惯例convention。我们仍然可以将其用作公共成员public member。但我们不应该这样做。遵循良好的编程习惯会让我们的代码更优雅,也更容易被其他开发人员阅读。
  • 双前置下划线机制是一种语法syntax而非惯例convention。Python 使用名称混淆name mangling技术来确保我们不会在类外使用私有成员。

单个后置下划线

有时,我们会为变量variable想一个好名字,但不幸的是,这个名字与 Python 关键字keywords或内置变量built-ins相冲突。我们可以使用一个下划线underscore后置来避免歧义。例如

list_ = [1,2,3] # good naming style
list = [2,3,4]  # bad name; has ambiguity with Python keyword

双前置和后置下划线

这个约定用于 Python 类的特殊special变量variables或方法methods(所谓的 “魔法方法magic method”),例如 __init__() 方法。我们只需要知道 Python 魔法方法magic method使用了这个约定convention,并避免这样命名我们的变量variables或方法methods。

结论Conclusion

一个优秀的开发者应该遵循常用的代码约定并关注细节。在 Python 中正确使用下划线underscores就是一个好习惯good habit。

文章来源:https://blog.csdn.net/JENREY/article/details/135292140
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。