Python中各种下划线使用总结和实例详解

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_

有的时候属性名或者方法名与某些系统关键字重复,这个时候就可以在后面加下划线来解决名字冲突。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值