python 变量名中的下划线字符对解释器有影响吗?

Does underscore character in python variable names matter to the interpreter?

我看到 python 变量中使用了下划线字符。解释器是否会因下划线 _ 的存在而对变量进行不同的解释,还是纯粹是约定俗成的问题?如果是惯例,python 变量中是否有关于命名约定的标准文档?

我正在使用 python 3.8.5

按照惯例,在 _some_var 中以单个下划线开头的变量被认为是私有的——这意味着外部实体不应期望它的使用在各个版本中保持稳定或永远处于任何通常理智的状态。它不仅仅是惯例。 from somemodule import * 不会将这些“私有”变量添加到模块命名空间。

来自 PEP8,python 的标准风格指南:

[T]he following special forms using leading or trailing underscores are recognized (these can generally be combined with any case convention):

_single_leading_underscore: weak "internal use" indicator. E.g. from M import * does not import objects whose names start with an underscore.

  1. 单前导下划线:_var 下划线前缀意味着向另一个程序员提示以单个下划线开头的变量或方法旨在供内部使用。此约定在 PEP 8.

    中定义
  2. 单尾随下划线:var_ 有时,最适合变量的名称已被关键字采用。因此 class 或 def 之类的名称不能用作 Python 中的变量名。在这种情况下,您可以附加一个下划线来打破命名冲突。

  3. 双前导下划线:__var 对于以双下划线开头的 Python class 属性(变量和方法),情况有些不同。 双下划线前缀导致 Python 解释器重写属性名称以避免子 classes 中的命名冲突。 这也称为名称修改——解释器更改变量名称的方式使得在 class 稍后扩展时更难产生冲突。

  4. 双前导和尾随下划线:var 也许令人惊讶的是,如果名称以双下划线开头和结尾,则不会应用名称改编。双下划线前缀和后缀包围的变量不会受到 Python 解释器的影响。

这些段落摘自https://dbader.org/。请查看页面以获取更多详细信息和示例。