栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python杂记——下划线总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python杂记——下划线总结

Python中的下划线可以分为单下划线"_ "和双下划线 “__”。与变量和函数名称有一下几种组合:

  • 在名称前面:_name和__name
  • 在名称后面: name_和name__
  • 前后都有: name 和 __ name __
  • 不和名称结合:_
在名称前面 单下划线

单下划线在名称前面只是约定俗成的使用方式,用来说明该变量或者函数只是内部使用。但这不是python解释器强制的,只是对代码使用者或者阅读者的提示。

需要注意的一点,如果函数,方法,类的名称使用单下划线开头,使用import *引入该模块的时候是不能够被引入的

双下划线

双下划线就厉害了。通过dir可以看到以双下划线开头的名字会被修改,前面添加了类的名称。
双下划线会使解释器修改名称,用来避免子类的命名冲突。它可以当做类里面的私有变量或者函数来使用。但并不是严格的私有方法,通过修改后的名称仍然可以访问。

class MyTest():
    def __init__(self):
        self.aa = 1
        self.__aa = 2

    def __ss(self):
        return self.aa


test = MyTest()

#test.__aa
print(dir(test))
print(test.__ss)
['_MyTest__aa', '_MyTest__ss', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'aa']
Traceback (most recent call last):
  File "test_.py", line 16, in 
    print(test.__ss)
AttributeError: 'MyTest' object has no attribute '__ss'
在名称后面 单下划线

单下划线在名字后面通常应用与避免与python中的关键字冲突。

def student(name, class_)
双下划线

这个和单下划线差不多,基本不会用到。

前后都有 双下划线

一般是系统定义的名称,或者用于操作符重载。单张自己定义最好不要使用这种风格的命名,避免与python产生冲突。

单独下划线 单下划线

一种情况是用来表示某个变量是临时的或者不需要关注的,比如忽略函数的某个返回值或者for循环中条件变量。

ret,- = get_result()
for _ in range(10):
	dosomething()

还有一个使用方法是获取最近表达式的结果。

> 3 + 2
> 5
> _
> 5
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号