看代码的时候,经常看到各种变量名带各种下划线,有单下划线、双下划线等,主要有五种下划线(按照下划线位置命名类型):
- 单下划线:_
- 单下划线变量名:_var
- 变量名单下划线:var_
- 双下划线变量名:__var
- 双下划线变量名双下划线:__var__
1. 单线划线
单线划线“_”:常用表示临时变量、无关紧要变量和Python REPL中的一个特殊变量。
- 临时变量:例如在循环中,可用“_”表示循环变量,只适临时应用。
- 无关紧要变量:当拆分元组时,对于元组中不需要的信息,可以用“_”表示,不用再额外定义变量名,如下:
- Python REPL中的一个特殊变量:用于表示python解释器最近一个表达式的结果。当想查看前一个表达式运行结果,又不想事先定义变量名时,可以使用“_”输出前一个结果,如下:
简单来说,单线划线的主要目的是:对于不重要的变量,不用定义变量名,以免引起变量名混乱。
2. 单下划线变量名
以单个下划线开头的变量或方法仅供内部使用,无法被调用,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/08d3a49147dff4626f1872e1cf565838.png)
外部调用:无法通过使用通配符导入来从模块中导入所有名称的方法,报错如下:
可以通过使用常规导入来导入“单线划线变量名”类型的变量,如下:
简单来说,就是单下划线是一种Python命名约定,表示某个名称是供内部使用的。它通常不是由Python解释器强制执行的,只是对程序员的提示。
3. 变量名单下划线
当变量名已经存在或为Python关键字时,想继续使用该变量名,则在该变量名后加一个下划线,与已经定义过的变量名或Python关键字区分开来,避免冲突。如下:当变量名“a”已经被定义以后,或者当我们想使用python关键字“class”做变量名时,可以通过在变量名后添加单下划线使用。
4. 双下划线变量名
双下划线开头表示私有,仅在当前类中可用,外部、子类均无法调用和继承,但这不是Python设计双下划线开头的初衷和目的,Python设计此的真正目的仅仅是为了避免子类覆盖父类的方法。如下:当我们想在子类中修改父类中“__method”函数时,是无法修改的。
5. 双下划线变量名双下划线
__var__:前面和后面加上下划线代表着是系统定义的名字,是魔法方法(魔法方法见https://cloud.tencent.com/developer/article/1909589)。普通变量不能使用此方式来命名。__var__表示当前模块执行过程中的名称,如果该模块执行,则__var__的值为"__main__",如果模块是被导入的,则__var__的值为被导入的模块的模块名字。
__main__:表示整个工程开始运行的入口。