Python中有各种各样的下划线变量与函数,看了很多博客和讲解,但是感觉还是很乱。尤其是有人拿C++中的私有变量一说来解释Python下划线是完全错误的。Python中不存在私有变量(这里的私有变量指不可直接用成员符.来访问),实际上Python中不同位置的下划线有不同的意义。现参照一些自己看过的博客、讲解归纳总结一下:单个下划线用作接收无用变量
例1:
a, _, _ = 1,2,3
print(a)
例2:
for _, val in enumerate(range(4)):
print(val)
2.单(多)个下划线作为模块内的变量(函数、类)名
如果我们在一个模块内定义了下划线开头(无论多少下划线)的变量、函数或类的话,当在别的文件中使用from module import *时,这些下划线变量不会被引用到文件内。
当然事情不是绝对的,以下几种情况还是可以把下划线变量import进来的:使用import module,此时还是可以使用module._name使用下划线变量
使用from module import _name,当然可以了 ^o^
还有一种情况,当module中定义了__all__的话,且__all__中定义了下划线变量,则还是会import进来。(__all__是个魔法属性,它是个用户可以定义的列表,可以在文件中定义它来控制import时引入的变量)
3.类内的下划线开头的变量(函数)名
具体来说分为两种:类内单下划线开头的变量名(包括类变量与实例变量)
类内双下划线开头的变量(函数)名
首先说单下划线: