单前置下划线的名字,《流畅的python》作者称之为“受保护的”名字,有两种主要的用法:1、作为类名或函数名时,会阻止其他python脚本通过【from module import *】语句导入该名字,即该名字不会被星号匹配; """foo.py模块""" def add(a, b): """待导入的函数,是个公有的名字""" return a+b def _add2(a, b): """待导入的函数,是个受保护的名字""" return a+b 比如,对于上面的模块foo,如果我在另一个python脚本中使用【from foo import *】语句,实际上是访问不到_add2()函数的,但是如果我使用【from foo import add, _add2】语句,则两个函数都能被访问到。 2、作为类的属性名或方法名时,意为不希望下游的程序员直接访问该名字,而导致意外覆盖该属性,但是这只是一种【命名约定】,python解释器不会对这种属性名做特殊处理。
单前置下划线的名字,《流畅的python》作者称之为“受保护的”名字,有两种主要的用法:
1、作为类名或函数名时,会阻止其他python脚本通过【from module import *】语句导入该名字,即该名字不会被星号匹配;
比如,对于上面的模块foo,如果我在另一个python脚本中使用【from foo import *】语句,实际上是访问不到_add2()函数的,但是如果我使用【from foo import add, _add2】语句,则两个函数都能被访问到。
2、作为类的属性名或方法名时,意为不希望下游的程序员直接访问该名字,而导致意外覆盖该属性,但是这只是一种【命名约定】,python解释器不会对这种属性名做特殊处理。