今天给大家科普一波,单下划线和双下划线在Python变量和方法名称的含义。有一些含义仅仅是依照约定,被视作提示,而有一些含义是由Python解释器严格执行的。在Python变量和方法名称中各种单下划线和双下划线的含义是什么?
下面我们将讨论5种下划线模式和命名约定,以及它们如何影响Python程序的行为:
单前导下划线:_var
单末尾下划线:var_
双前导下划线:_ _var
双前导和末尾下划线:_ var _
单下划线:_
1、单前导下划线:_var
说明:
当涉及到变量和方法名称时,单个下划线前缀有一个约定俗成的含义。
下划线前缀的含义是:以单个下划线开头的变量或方法仅供内部使用。
这不是Python强制规定的,Python不像Java那样在“私有”和“公共”变量之间有很强的区别。
小结:
单个下划线是一个Python命名约定,表示这个名称是供内部使用的。它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。
2、单末尾下划线:var_
说明:
有时候一个变量的最合适的名称已经被一个关键字所占用, 因此,像class或def这样的名称不能用作Python中的变量名称。
小结:
总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。
3、双前导下划线:__var
说明:
目前为止,我们所涉及的所有命名模式的含义,来自于已达成共识的约定。而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同。双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。这也叫做名称修饰 - 解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。
小结:
名称修饰不是专门与类属性关联的。它适用于在类上下文中使用的两个下划线字符开头的任何名称。
4、双前导和双末尾下划线:var
说明:
如果一个名字同时以双下划线开始和结束,则不会应用名称修饰。
Python保留了有双前导和双末尾下划线的名称,用于特殊用途。这样的例子有,init__对象构造函数,或__call ,它使得一个对象可以被调用。
小结:
最好避免在自己的程序中使用以双下划线开头和结尾的名称,以避免与将来Python语言的变化产生冲突。
5、单下划线:_
说明:
按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。
小结:
除了用作临时变量之外,“_”是大多数Python REPL中的一个特殊变量,它表示由解释器评估的最近一个表达式的结果。