python中不同下划线类型的含义

python共有5中不同的下划线类型含义

这五种下划线共同遵守了PEP8的规则,分别是:

① 单前导下划线:_test
② 单末尾下划线:test_
③ 双前导下划线:__test
④ 双前导和双末尾下划线:__test__
⑤ 单下划线:_


下面分别介绍不同下划线类型代表的含义


单前导下划线:_test

该下划线旨在表明该修饰的变量或方法仅供内部使用,表示不属于公共接口的部分,因为python中的“私有变量”和“公有变量”没有java分的那么清楚。因此单前导下划线是人为制定的一种规则,需要共同遵守。

通俗来讲这是一个保护成员(属性或者方法),只有类对象和子类对象自己能访问到这些变量,是用来指定私有变量和方法的一种方式(约定而已)

注:对于前导下划线修饰的方法来说,import * 并不会导入以单下划线开头的方法,需要注意!


单末尾下划线test_

这个下划线也是一种人为制定的规则,主要用于解决与python关键字冲突的参数命名。


双前导下划线:__test

因为python中没有严格意义上的“私有变量”,以双前导下划线命名的变量或方法,不能直接调用,通过dir(obj),我们可以发现会加上python解释器重新命名了该属性,通常以_类__变量的格式命名。

注:既然不是真正的“私有变量”,那么其实是可以通过obj.__dict__来访问这些“私有变量”。不过一般不会这么做,都会遵守约定。


双前导和双末尾下划线:__test__

这个下划线往往出现在python内置的魔法方法中,所以除非重写这些魔法方法,否则尽量不要自定义这种下划线的方法,避免和python语法冲突


单下划线:_

该下划线往往针对不是很重要的索引或变量使用匿名,作为一个临时值。
同时,它作为一个特殊变量,表示有解释器评估的最近的一个结果。

1
2
person= ('syz','20','male','computer')
name, _, _, hobby = person

结果:
`>>> _

male


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!