- 单下划线前缀的变量,在Python中是一种约定或者是提示,它表示这个变量只能或者方法
只能再内部使用.尽量不要在外部使用,不像其他的强类型的语言,在外部是不可访问的.- 单下划线的变量在使用通配符导入(
from module import *
)的时候是不可见的.
单下划线前缀变量在外部依旧可以访问
单下划线变量,在使用 from module import *
的时候是不可见的.但是常规的导入就是可以的
首先是创建一个模块,名称为module_simple,代码内容如下:
val = "我是常规变量" # 常规变量1 _val = "我是带前导下划线的变量" # 带前缀的变量2 def normal_function(): print("我是一个常规的函数") def _inner_func(): print("我是一个带前导下划线的内部函数")
通配符导入的时候无法访问单下划线开始的对象
如果是常规导入模块的方式,可以访问单下划线开头的对象
注
单下划线开头的变量只是一个Python的命名约定,表示这个名称是在内部使用.它通常不由Python
解释器强制执行,只是作为对程序员的约束和提示
单下划线后缀没有实际的意义,就是给变量加一个下划线,避免和一些Python内置的关键字重复
或者避免跟已经存在的变量重复. 想类似str,int,class,def,for
这样的关键字不能作为对象名称
可以加一个单下划线来解决str_,int_,class_,def_,for_
单下划线没有实际的意义,就是用来解决变量名的冲突而产生的,一般很少使用
- 双下线开头的对象,会被认为是一个类的私有的对象,不能在外部直接访问
- 这个私有,是相对的,它只是被换了一个名称被保存了起来
- 双下划线开始的变量会被变成类的属性
_Class__var
,其中_Class
称为名称修饰符
这样做的目的是什么呢,就是防止外部直接使用,防止继承的子类直接使用进行修改,但是也不能完全的防止这个事情,因为它还是可以通过_Class__val的方式访问的
如果一个变量名称,以双下划线开头并且以双下划线结尾,这个变量一般是Python内部的变量
Python解释器遇到这种变量的时候会做特殊的调用处理
这种变量可以直接访问,但是不建议我们自定义的使用使用,避免和Python的内置变量冲突
- 单独的一个下划线
_
可以当成一个名字,用来表示某个临时的或者无关紧要的变量.- 可以在拆分变量的时候,用
_
来占位那些你不要的变量,可以忽略掉.*_
可以忽略多个变量