详解Python 下划线、双下划线的涵义

  • Post category:Python

在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是私有的

需要注意的是,虽然使用双下划线不会真正的将一个成员变量或方法变为私有的,但是这种写法可以阻止类外部的访问,提高代码的安全性。