写点什么

Python 中的下划线

用户头像
shiziwen
关注
发布于: 2020 年 06 月 17 日

在这篇文章中,我们将讨论下划线的5种模式以及各自的意义。正确理解和掌握这几种下划线,将有助于我们写出高质量的代码。

Python中有一下5中下划线:

  • _var

  • var_

  • __var

  • __var__

  • _



_var

这种在变量名称之前的单下划线,表示这个变量是内部使用的,类似于Java语言中的private。

但是仍然可以通过变量名来访问它。例如:

class Person:
def __init__(self):
self.name = 'Prashant'
self._age = 26



>>> p=Person()
>>> p._age
26



var_

如果我们想要定义一个和Python关键字或者内置变量同名的变量,为了避免冲突,需要在变量名后加一个单下划线。例如下面例子中的class_:

def method(name, class_='Classname'):
pass



__var

如果一个变量名前加了两个下划线,那我们将无法直接通过变量名访问到它,因为python编译器会对其进行修改,例如:

class Employee:
def __init__(self):
self.name = 'Prashant'
self._age = 26
self.__id = 11

此时,__id将会变为_Class__id即_Employee__id。

>>> p=Employee()
>>> p._Employee__id
11

这么做,可以使得一个类和其子类有着相同的变量名,而且访问时不会发生冲突。因为访问变量的时候,需要加上具体的类名。



__var__

变量前后各两个下划线,这种是Python的magic方法,例如我们常用的__init__或者__str__等。

如果我们定义了这种变量,也是可以直接访问的,例如:

class Magic():
def __init__(self):
self.__num__ = 11



>>> p=Magic()
>>> p.__num__
11



_

单独的一个下划线,这种下划线更多的是用来做临时变量,例如:

for _ in range(2):
print('Hey there...')



此外,单下划线还会返回上次被Python解释器执行的最后一次结果,例如:

>>> 10+20
30
>>> _
30



参考资料:



用户头像

shiziwen

关注

还未添加个人签名 2017.11.02 加入

还未添加个人简介

评论

发布
暂无评论
Python中的下划线