#Python 下划线、双下划线
一般常见的下划线为以下几种:
- 前置单下划线:
_var - 后置单下划线:
var_ - 前置双下划线:
__var - 前后双下划线:
__var__ - 单下划线:
_
###1. 前置单下划线变量和单下划线方法的区别:
前置单下划线表示在方法内部使用,单下划线变量可以从外部引用,而单下划线方法在使用通配符导入包时(from package import *)不可以,除非使用import package,然后使用”package._model”进行使用。
1 | class Test: |
2. 后置单下划线
当需要使用的最合适的变量名与关键字所重复,可以使用后置单下划线来绕过命名冲突
1 | >>> def make_object(name, class): |
3. 前置双下划线
前置双下划线会被解释器进行命名改写。这个例子先声明_MangledGlobal__mangled为全局变量,然后在名为MangledGlobal的类环境中访问变量。由于名称改写,类中的test()方法仅用__mangled就能引用_MangledGlobal__mangled全局变量。__mangled以双下划线开头,因此Python解释器自动将名称扩展为_MangledGlobal__mangled。这表明名称改写不专门与类属性绑定,而是能够应用于类环境中所有以双下划线开头的名称
1 | _MangledGlobal__mangled = 23 |
###4. 单独单下划线
单下划线有时用作名称,来表示变量是临时的或无关紧要的
1 | 例如下面的循环中并不需要访问运行的索引,那么可以使用_来表示它只是一个临时值: |
5.总结
- 前置单下划线
_var:命名约定,用来表示该名称仅在内部使用。一般对Python解释器没有特殊含义(通配符导入除外),只能作为对程序员的提示。 - 后置单下划线
var_:命名约定,用于避免与Python关键字发生命名冲突。 - 前置双下划线
__var:在类环境中使用时会触发名称改写,对Python解释器有特殊含义。 - 前后双下划线
__var__:表示由Python语言定义的特殊方法。在自定义的属性中要避免使用这种命名方式。 - 单下划线
_:有时用作临时或无意义变量的名称(“不关心”)。此外还能表示Python REPL会话中上一个表达式的结果。