在Python中,下划线和双下划线都有特定的用处,下面就对它们的使用方法进行详细介绍:
一、单下划线
在Python中,单下划线一般被用作命名规范,表示这个变量、函数或方法是临时的、无需使用或者只是内部使用的。单下划线在很多情况下没有实际的作用,只是作为一种约定来使用。
下面是单下划线的例子:
# 将单下划线作为命名规范
class MyClass:
def __init__(self):
self._internal = 0 # 使用单下划线来表示这个成员变量是内部使用
def public_method(self):
"""
一个公开的方法
"""
pass
# 单下划线通常被用在模块中来限制 import * 的功能,因为它会防止被导入的模块中的所有名称都被导入。
# 这里的例子演示了如何用单下划线限制 import 的功能
from my_module import *
__all__ = ['a', 'b', '_c'] # 只导入 a, b 和 _c,其他都不会被导入
二、双下划线
Python中的双下划线是用于指定一个类的私有成员的方法。虽然,在Python中没有真正的私有成员,但是使用双下划线可以让一个方法被命名为“私有成员”,这意味着它不能被类的外部调用。
下面是双下划线使用方法的例子:
# 使用双下划线表示一个类成员为私有
class MyClass:
def __init__(self):
self.__private_var = 0 # 使用双下划线来表示这个成员变量为私有变量
def __private_method(self):
"""
一个私有方法
"""
pass
def public_method(self):
"""
一个公开的方法,可以调用私有方法和私有变量
"""
self.__private_method() # 公开的方法可以调用私有方法
self.__private_var += 1 # 公开的方法可以修改私有变量
mc = MyClass()
mc.public_method()
print(mc.__private_var) # 会报错,因为__private_var是私有的
需要注意的是,虽然使用双下划线不会真正的将一个成员变量或方法变为私有的,但是这种写法可以阻止类外部的访问,提高代码的安全性。