Python 中有下划线(_)和双下划线(__)两种使用方法,下面分别进行详细讲解:
下划线(_)
作为变量名前缀
下划线作为变量名前缀,通常表示这个变量是私有的,即不能被外部访问。这是一种约定俗成的用法,Python 并没有真正的私有变量,通过使用下划线作为前缀,可以告诉其他人这个变量是内部使用的,不应该被使用者直接访问。
下面是一个示例:
class Person:
def __init__(self, name):
self._name = name
def get_name(self):
return self._name
def set_name(self, name):
self._name = name
在这个示例中,_name
表示这个变量是类 Person
内部使用的,外部不应该直接访问。如果有需要,可以通过类的方法 get_name
和 set_name
进行访问和修改。
在交互式环境中使用
在 Python 的交互式环境中,下划线表示上一个表达式的结果。例如:
>>> 1 + 2
3
>>> _ + 4
7
在第二行中,使用下划线直接引用了上一个表达式的结果,等价于 3 + 4
。
双下划线(__)
双下划线主要用于类中定义私有变量和方法。
私有变量
双下划线作为前缀的变量表示这个变量是类的私有变量,只能通过对象的方法进行访问。例如:
class Person:
def __init__(self, name):
self.__name = name # 双下划线表示这个变量是私有的
def get_name(self):
return self.__name
在这个示例中,__name
表示这个变量是类 Person
的私有变量,只能通过方法 get_name
进行访问。
需要注意的是,Python 在解析双下划线前缀时,会自动将变量名“翻译”成 _类名__变量名
的形式,因此可以通过这种方式绕过私有变量的访问限制。例如:
p = Person('Tom')
print(p._Person__name) # 输出 "Tom"
在这个示例中,使用了 _Person__name
的方式访问了 __name
,虽然是私有变量,但是仍然能够得到正确的结果。但是这种方式不建议使用,违背了类的封装思想。
私有方法
双下划线作为前缀的方法表示这个方法是类的私有方法,只能在类的内部被访问。例如:
class Person:
def __init__(self, name):
self.name = name
def __display(self):
print(f"My name is {self.name}.")
def say_hello(self):
self.__display()
在这个示例中,__display
表示这个方法是类 Person
的私有方法,只能在类的内部被访问。在 say_hello
方法中通过 self.__display()
调用了私有方法。
需要注意的是,实际上 Python 在解析双下划线前缀时也会进行名称“翻译”,所以这种方式也可以绕过私有方法的访问限制。但是同样不建议这种用法,因为违背了类的封装思想。
以上就是 Python 下划线、双下划线的使用方法。在实际编程中,良好的编码习惯可以提高代码的可读性,减少出错率。因此,应该充分理解和应用这些用法。