Python 下划线含义
本文介绍了 Python 中单下划线和双下划线的各种含义及命名约定。
单前导下划线
示例:_var
单下划线开头的命名方式常在模块中使用,有一个约定俗成的含义,表示希望这个变量或方法仅供 内部使用,是对开发者的一种提示。在类中使用时表示 受保护成员,意思是只有类对象和子类对象能访问到这些数据。在实际使用中不能用 from module import *
导入,但允许使用 from module import xxx
导入。
单末尾下划线
示例:var_
单下划线结尾的命名方式也存在,但是不常用,其实也不推荐用。这种命名方式的作用就是为了和 Python 的一些内置关键词区分开来,假设我们想给一个变量命名为 class,但是这会跟 Python 的关键词 class 冲突,所以我们只好退一步使用单下划线结尾命名,也就是 *class_*。
双前导下划线
示例:__var
双下划线开头的命名方式有更为实际的作用,表示类的 私有成员,只允许类本身访问,连子类对象也不能访问到这些数据,也无法直接通过 对象名.成员名
这样的方式访问。双下划线前缀会导致 Python 解释器重写属性名称,以避免子类中的命名冲突,这种行为也叫做 名称修饰(name mangling)。
可以使用内置的
dir()
方法查看对象属性。
双前导双末尾下划线
示例:__var__
以双下划线开头和结尾的是 Python 中的 “魔术” 对象,是特殊方法专用的标识,如类成员的 __init__
、__del__
、__add__
、__getitem__
等,以及全局的 __file__
、__name__
等。需要注意的是,如果一个名字同时以双下划线开头和结尾,则不会应用名称修饰,即被双下划线前缀和后缀包围的变量不会被 Python 解释器修改。
Python 官方推荐 永远不要 将这样的命名方式应用于自己的变量或方法,而是按照文档说明来使用,以避免与将来的 Python 语言产生冲突。
单下划线
示例:_
按照习惯,有时候单个的独立下划线可以用作一个名字,来表示某个变量是 临时的 或 无关紧要的。例如,在下面的循环中,我们不需要访问正在运行的索引,那么可以使用 _
来表示它只是一个临时值:
1 |
|
除了用作临时变量之外,_
是大多数 Python REPL(交互窗口)中的一个特殊变量,表示由解释器评估的最近一个表达式的结果,例如:
1 |
|
小结
模式 | 举例 | 含义 |
---|---|---|
单前导下划线 | _var |
命名约定,表示希望变量或方法仅供内部使用。 |
单末尾下划线 | var_ |
命名约定,用于避免和 Python 的一些内置关键词冲突。 |
双前导下划线 | __var |
在类中使用时会触发名称修饰,类似于 Python 的 “私有变量”。 |
双前导双末尾下划线 | __var__ |
Python 语言定义的 “魔术” 对象,应该避免使用这种命名方式。 |
单下划线 | _ |
作为临时的或无关紧要的变量的名称。 |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!