Python 中的下划线 (_)

2024 年 8 月 29 日 | 阅读 3 分钟

在本文中,我们将讨论单下划线 (_) 和双下划线 (__) 在 Python 中的作用。

当用户在 Python 中编写代码时,有时会使用单下划线 (_),有时会使用双下划线 (__)。

以下是用户使用下划线的一些情况。

  • 如果用户想存储解释器中最后一个表达式的值。
  • 如果用户想在代码中声明变量或函数。
  • 如果用户想分隔数字的字面值。
  • 用于忽略某些值。
  • 下划线也用作“本地化 (l10n)”和“国际化 (i18n)”函数。

让我们来看一些这些情况的例子。

在解释器中使用

Python 解释器会将最后一个表达式的值存储在 '_' 中。

示例

忽略值

在这里,我们将使用下划线 (_) 来忽略值。

示例

此处,

下划线 (_) 用于忽略值 50。

使用下划线 (_) 声明变量和函数

Python 语言不支持私有变量或函数,因此用户无法强制实现私有变量和函数,但他们可以直接从其他模块调用它们。

示例

用户可以使用尾部下划线 (_) 来避免与 Python 关键字和内置函数发生冲突。

示例

上面的双下划线 (__) 用于避免属性名之间的名称冲突。

如果用户在类中编写函数名 "__display",则该名称将被修改为 "_ClassName__display" 形式。

示例

在某些情况下,用户使用此形式,例如 __init__

分隔数字字面值

下划线 (_) 可用于分隔数字字面值。

示例

输出

5000000

作为本地化 (l10n) 和国际化 (i18n) 函数

这只是一个约定,而不是任何语法功能。下划线 (_) 用于将 i18n/l10n 绑定到带下划线的变量。其概念源自 C 语言约定。

Python 变量的前导下划线 (_) 意味着什么?

类中的名称,带有前导下划线 (_),是为了向其他用户表明该属性或函数在程序中 intended to be private(意图为私有的)。

建议用户使用单下划线 (_) 表示半私有变量,使用双下划线 (__) 表示全私有变量。

在下面的示例中,我们将展示单下划线 (_) 和双下划线 (__) 前缀之间的区别。

示例

输出

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-4f3b78146b9f> in <module>
      7 mc = UserClass()
      8 print(mc._semi_private)
----> 9 print(mc.__fully_private)

AttributeError: 'UserClass' object has no attribute '__fully_private'

在上面的代码中,用户尝试访问全私有变量,并在输出中会收到一个错误,指出 UserClass 没有名为 '__fully_private' 的属性。

结论

在本文中,我们通过不同的示例讨论了单下划线 (_) 和双下划线 (__) 在 Python 中的用法。