python中变量/函数名称前的_

在 Python 中,函数名前面加下划线 _ 是一种约定,用于表示不同类型的含义:

1. 单下划线 _:

  • 保护变量/函数/方法(Weak "internal use" indicator): 这是一种约定,表示该变量/函数/方法是供内部使用的。它并不会真正阻止外部访问,但它向其他开发者暗示了不应该直接访问或修改这个变量/函数/方法。例如:

def _internal_function():
    # ...

class MyClass:
    def _private_method(self):
        # ...

_internal_variable = 10

  • 在交互式解释器中存储上次表达式的结果: 在交互式解释器(例如 Python REPL)中,_ 会存储上次执行的表达式的结果。

>>> 1 + 2
3
>>> _
3
>>> _ * 2
6

content_copyUse code with caution.Python

  • 忽略值: 在循环或元组拆包中,可以用 _ 来忽略不需要的值。

for _ in range(5):
    # ...

x, _, z = (1, 2, 3) # 忽略第二个值

  • 国际化 (i18n): 有时 _ 函数被用作 gettext 模块的快捷方式,用于翻译字符串。

2. 双下划线 __ (Name Mangling):

  • 防止命名冲突 (Name Mangling): 双下划线 __ 会触发 Python 的名称改写机制(name mangling)。它会将变量/方法的名称改写成 _ClassName__variableName 的形式,以避免在继承时出现命名冲突。这使得子类可以定义与父类同名的变量/方法,而不会覆盖父类的实现。例如:

class MyClass:
    def __private_method(self):
        print("MyClass.__private_method()")

class SubClass(MyClass):
    def __private_method(self):  # 实际上定义的是 _SubClass__private_method
        print("SubClass.__private_method()")

3. 单下划线后跟双下划线 _ (Special methods or "dunder" methods):

  • 特殊方法(Magic Methods/Dunder Methods): 以双下划线开头和结尾的方法,例如 __init__、__str__、__len__ 等。这些方法具有特殊的含义,用于定义类的行为,例如对象的初始化、字符串表示、长度等等。 不应该直接调用这些方法,而是通过 Python 的内置函数或操作符来间接调用。

总结:

下划线含义
_保护成员,忽略值,交互式解释器中存储上次结果,国际化
__名称改写,防止命名冲突
__...__特殊方法(魔法方法/双下划线方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值