美文网首页
pythonlelei

pythonlelei

作者: 飞飞小狮子Will | 来源:发表于2017-11-26 21:06 被阅读0次

Python中的下划线的用法总结

单划线(_)

在解释器中

在解释器中,_代表交互式解释器会话中上一条的执行结果。这种用法有点类似于Linux中的上一条命令的用法。只不过在在Python解释器中表示的上一条执行的结果。

>>>"alright"

'alright'

>>>_

'alright

作为一个名称

作为临时性的名称使用,但是在后面不会再次用到该名称。这种用法在循环中会经常用到。

for _  inrange(10):

    do_something()

作为函数的连接符,仅仅是一种函数名的命名方式,就如同Java的驼峰式的命名法是一样的。

def add_user(user):

     do_something

名称前的单划线(_get_content)

在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

名称前的双下划线(如:__run)

名称前带有双下划线的变量,表示的是一个私有函数,无法被继承,也无法在外部访问。

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)

前后有双下划线表示的是特殊函数。通常可以复写这些方法实现自己所需要的功能。最常见的就是复写__init__方法。

classPeople(object):

def__init__(self, arg):

super(People, self).__init__()

self.arg = arg

相关文章

  • pythonlelei

    Python中的下划线的用法总结 单划线(_) 在解释器中 在解释器中,_代表交互式解释器会话中上一条的执行结果。...

网友评论

      本文标题:pythonlelei

      本文链接:https://www.haomeiwen.com/subject/skslbxtx.html