Python中经常出现各种单下划线,双下划线,而且有的在前有的在后,有的是约定俗成的用法,有的则会强制对外隐藏。这一篇我们就一起来把各种下划线的用法说清楚。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
文章目录
五种下划线的用法
Python中下划线有如下五种用法:
- 前置单下划线,例如
_var
- 后置单下划线,例如
var_
- 前置双下划线,例如
__var
- 前后双下划线,例如
__var__
- 单下划线,也就是单独的
_
下面就对这五种用法分别用例子来进行说明
操作环境
下面的演示环境为
- Python 3.7.1
- IPython 7.2.0
前置单下划线,例如_var
这是一种约定俗成的写法,用来告诉程序员像这样定义的属性或者方法建议只被内部属用。这是PEP8中明确定义的一种写法。
Python并不像Java那样有私有和公共变量的概念,所以并不会强制某个属性或者方法只能被内部使用。
看下示例。
在文件test_underscore.py
下定义如下类
class Test:
def __init__(self):
self.name = 'xiaofu'
self._englishname = 'victor'
def say(self):
print(self.name)
def _shout(self):
print(self._englishname)
然后实例一个对象出来,尝试访问两个属性和两个方法,发现都可以被正常访问
In [1]: import test_underscore
In [2]: xiaofu = test_underscore.Test()
In [3]: xiaofu.name
Out[3]: 'xiaofu'
In [4]: xiaofu._englishname
Out[4]: 'victor'
In [5]: xiaofu.say()
xiaofu
In [6]: xiaofu._shout()
victor
所以总结起来,前置单下划线只是一种对程序员的建议,该属性或者方法只被内部使用。Python本身不会阻止该变量或者方法被实例对象访问。
后置单下划线,例如var_
有的时候属性名或者方法名与某些系统关键字重复,这个时候就可以在后面加下划线来解决名字冲突。<