_
用于临时变量
_
可以作为一个临时变量,用来接收各种没什么用的变量,这种用法多见于各种生成器产生数据时,有的时候生成器返回的数据我们只需要用到其中的部分变量,那么那些没有用到同时在赋值时不能缺少的变量就可以用_
接收,除此以外,单下划线在python中会默认与上一次运算过程中的非None
结果保存下来(注意赋值语句相当于None,与C语言区分开),有点类似于计算器的ans
功能:
2+2 |
除此以外_
还用于长数字的分割,这在数字本身较长时比较常见:
9_999_999_999 a = |
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__
用于魔术方法
魔术方法一般是给系统调用用的,可以理解为一种通用
方法,因为十分通用,所以直接以这种形式固定了下来
参开文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小明的博客!
评论