关于单双下划线区别及含义:
1、单前导下划线
划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用,前导下划线虽然说明了仅仅供内部使用,但是在外部方法中调用还是可以的,但的确会影响从模块中导入名称的方式。
例如:
class Test:
def __init__(self):
self.foo = 11
self._bar = 23
t = Test()
t.foo
11
t._bar
23
实例化类的时候单前导下划线并没有阻止访问
# This is my_module.py:
def external_func():
return 23
def _internal_func():
return 42
>>> from my_module import *
>>> external_func()
23
>>> _internal_func()
NameError: "name '_internal_func' is not defined"
此时调用类时单前导下划线阻止了类的调用
但是与通配符导入不同,常规导入不受前导单个下划线命名约定的影响:
>>> import my_module
>>> my_module.external_func()
23
>>> my_module._internal_func()
42
2、单末尾下划线
单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突
一个变量的最合适的名称已经被一个关键字所占用。 因此,像class或def这样的名称不能用作Python中的变量名称。 在这种情况下,你可以附加一个下划线来解决命名冲突:
>>> def make_object(name, class):
SyntaxError: "invalid syntax"
>>> def make_object(name, class_):
... pass
3、双前导下划线
待补充::::
4、前后双下划线
待补充