Python中的下划线的用法总结
在解释器中,_代表交互式解释器会话中上一条的执行结果。这种用法有点类似于Linux中的上一条命令的用法。只不过在在Python解释器中表示的上一条执行的结果。
>>>"alright"
'alright'
>>>_
'alright
作为临时性的名称使用,但是在后面不会再次用到该名称。这种用法在循环中会经常用到。
for _ inrange(10):
do_something()
作为函数的连接符,仅仅是一种函数名的命名方式,就如同Java的驼峰式的命名法是一样的。
def add_user(user):
do_something
在Python文档中的解释是:以下划线_为前缀的名称(如_get_content)应该被是被API非公开的一部分不管是函数、方法还是属性。此时应该将她们看作一种实现细节,在修改他们的时候无需对外部进行通知。
当使用了以下划线_为前缀的名称,那么在使用from <模块/包名> import *时,以_开头的名称都不会被导入,除非是模块或包中的__all__列表显式地包含了他们。
由于这种写法仅仅是表示一种细节的实现,在类继承时仍然是可以继承的。
classpeople(object):
def_eat(self):
print('I am eating')
classStudent(people):
@property
defbirth(self):
returnself._brith
@birth.setter
defbirth(self,value):
self._birth = value
@property
defage(self):
returnself._age
s = Student()
s._eat()#输出: I am eating
名称前带有双下划线的变量,表示的是一个私有函数,无法被继承,也无法在外部访问。
classPeople(object):
def_eat(self):
print('I am eating')
def__run(self):
print('I can run')
classStudent(People):
deftorun(self):
self.__run()#出错,因为people的方法无法被继承,在Student中不存在__run()方法
s = Student()
s.torun()
p = People()
p.__run()#出错,因为私有函数无法在外部访问
《Python学习手册》的说明,以双下划线开头的变量名,会自动扩张,从而包含了所在类的名称。例如在Spam类中的X这样的变量名会自动编程_SpamX:原始的变量名会在头部加入一个下划线,然后是所在类名称。
dir(People)#输出:_People__run,_eat,...
前后有双下划线表示的是特殊函数。通常可以复写这些方法实现自己所需要的功能。最常见的就是复写__init__方法。
classPeople(object):
def__init__(self, arg):
super(People, self).__init__()
self.arg = arg
网友评论