当前位置: 首页 > 后端技术 > Python

python中的下划线

时间:2023-03-26 18:30:51 Python

概述python中的下划线主要分为以下几类:前导单下划线,如\_a、\_variable,主要用于将变量或方法定义为私有属性。这里的私有属性不像java那样私有,而是约定俗成,想强行还是可以正常访问的。尾部的单下划线,如a\_、val\_,主要是用来区分变量的,比如变量名和关键字冲突,后面跟一个下划线来区分。前导双下划线,如\_\_val,类中带前导双下划线的变量或方法,会触发python解释器的名称修改,不能通过名称直接访问,达到一定的隔离性。前后有双下划线,如\_\_init\_\_,这类方法是python中的魔术方法,可以重载。单下划线本身,如\_,主要用于无意义的变量名。前导单下划线将变量名和方法名指定为私有属性,但仍然可以从外部访问。这只是一个惯例。对于私有方法或变量名,此类表示对象/模块的方法或变量不希望暴露,应尽可能避免访问私有属性或方法。示例:类A(对象):def__init__(self):self._private=0def_private_method(self):print('AAAAA')>>>a=A()>>>a._private0>>>a._private_method()#可以直接访问AAAAA。尾部下划线主要用于区分变量名。变量名会变成\_类名\_\_变量名;直接访问__变量名不存在。示例:classA(object):def__init__(self):self.__private=0def__private_method(self):print('AAAAA')>>>a=A()>>>a.__privateTraceback(最后一次调用):File"",line1,inAttributeError:'A'objecthasnoattribute'__private'>>>a.__private_method()#Traceback(mostrecentcalllast):文件"",line1,inAttributeError:'A'objecthasnoattribute'__private_method'>>>a._A__private0>>>a._A__private_method()AAAAA可以看到这种情况最好定义一个接口直接面试。因为内部名称不变,名称修饰主要用于实例化后调用属性或方法时。A类(对象):def__init__(self):self.__private=0def__private_method(self):print('AAAAA')defget_p(self):返回self.__private>>>a=A()>>>a.get_p()0包含了上面单下划线规范的私有属性,也可以通过定义接口方法来访问。这样做的好处是私有方法或属性不能被篡改,可以得到很好的保护。这可以与@property结合使用。单下划线本身_示例:>>>a=[_for_inrange(10)][0,1,2,3,4,5,6,7,8,9]>>>a,_,_,d=func(*args,**kwargs)#在这种情况下,我们只想返回第一个和第四个参数。中间两个对当前模块没有意义,所以不需要定义变量名。