Python中的下划线
_
用于临时变量
_
可以作为一个临时变量,用来接收各种没什么用的变量,这种用法多见于各种生成器产生数据时,有的时候生成器返回的数据我们只需要用到其中的部分变量,那么那些没有用到同时在赋值时不能缺少的变量就可以用_
接收,除此以外,单下划线在python中会默认与上一次运算过程中的非None
结果保存下来(注意赋值语句相当于None,与C语言区分开),有点类似于计算器的ans
功能:
>>> 2+2
4
>>> a=1
>>> _
4
>>> for i,_ in [["xiaoming",172],["xiaowang",160]]:
... print(i)
...
xiaoming
xiaowang
除此以外_
还用于长数字的分割,这在数字本身较长时比较常见:
>>> a = 9_999_999_999
>>> a
9999999999
var_
解决命名冲突问题
编程过程中如果声明的变量是python的保留字的话,这个时候如果想要使用该保留字作为变量名称,则可以加一个_
,如创建一个变量class_
。
_var
用于保护变量
保护变量是指那些程序员约定俗成的,作为调用细节不需要操作者关心的一些变量,这些变量python的解释器不做访问限制,但是因为这些变量的缺失并不会对我们调用函数带来什么困难,如果直接导入还存在干扰我们的命名空间的可能,因此在使用类似于from XXX import *
这种导入形式时,这类变量并不会被导入,但是依旧可以通过在源模块的访问方式中进行访问(保护变量不做访问限制)。
当然,python社区并不希望我们使用
from XXX import *
这种通配导入的方法,因为这样的导入很容易影响到我们的命名空间(尽管去除了保护变量)
一般来说,突破保护属性的方法有两种:
- 一种是将保护属性加入到all列表(
__all__=[_var]
)中,接着我们就可以使用from XXX import *
导入在列表中的保护属性。 - 另外一种方法是在导入时直接声明要导入的保护变量的名称
- 甚至可以通过
import XXX
的方式进行导入
__var
用于私有变量
与保护变量类似,私有变量属于保护更大一些,私有变量通过解释器层面的改写机制(name mangling)实现了私有变量的保护。
当然这种改写机制也并非真正含义上的私有,python中不存在绝对私有的变量,只是通过这种改写方式告诉我们,这段程序的主人不希望我们变动私有属性的值。
__var__
用于魔术方法
魔术方法一般是给系统调用用的,可以理解为一种通用
方法,因为十分通用,所以直接以这种形式固定了下来
参开文献
相关文章
- python——正则表达式(re模块)详解
- 用Python分析2000款避孕套,得出这些有趣的结论
- PyAOS:大气和海洋科学Python社区
- python线程间通信的方式_android 线程间通信
- 用Python爬取王者荣耀英雄皮肤海报图
- Python:变量的命名规则
- Python <算法思想集结>之抽丝剥茧聊动态规划
- 你一定是在逗我,Python都不会就想做算法?
- 关于获取每个月第几周的第一天是周几和最后一天是几号 python
- Python-drf前戏38.1-前端Vue01
- python画图命令
- 2022年最新Python大数据之Python基础【九】面向对象与继承
- 手把手教你用Python破解邻家小妹wifi密码
- python实现卷积操作
- 我用python算出了同事的身份证号码!
- Python 一网打尽<排序算法>之堆排序算法中的树
- 使用python的pyecharts库绘制数据可视化大屏
- Python带你跨年!用Python送你一场跨年烟花秀
- python 变量与数据类型
- 工具推荐|面向气候研究者的Python可视化工具