python 下划线_汇总


在Python中,下划线 _ 有多种特殊用途和约定,涵盖了从语法特性到编程习惯的多个层面。以下是其主要应用场景的详细总结:

一、单下划线 _ 的应用

1. 作为临时或无关紧要的变量
# 忽略循环索引
for _ in range(3):
    print("Hello")

# 解包时忽略特定值
name, _, age = ("Alice", "Female", 30)
2. 交互式解释器中的上一个表达式结果
>>> 2 + 3
5
>>> _ * 2  # 使用_获取上一个结果
10
3. 国际化(i18n)中的翻译函数
import gettext
_ = gettext.gettext  # 绑定翻译函数
print(_("Hello, World!"))
4. 在模块导入时隐藏变量
# module.py
_internal_var = 10  # 不会被from module import *导入
PUBLIC_VAR = 20

二、单下划线前缀 _var 的应用

1. 弱私有变量/方法(约定)
class MyClass:
    def __init__(self):
        self._private_var = 10  # 外部仍可访问,但约定不直接使用
        
    def _private_method(self):  # 同上
        pass
2. 模块级私有(导入控制)
# 只导入未以下划线开头的成员
from module import *  # 不会导入_module_var

三、双下划线前缀 __var 的应用

1. 名称修饰(Name Mangling)
class MyClass:
    __private_var = 10  # 被重命名为 _MyClass__private_var
    
obj = MyClass()
print(obj._MyClass__private_var)  # 可以访问,但不推荐
2. 避免子类覆盖方法
class Parent:
    def __private_method(self):  # 被重命名为 _Parent__private_method
        pass

class Child(Parent):
    def __private_method(self):  # 被重命名为 _Child__private_method
        pass

四、双下划线环绕 __var__ 的应用

1. 魔法方法(特殊方法)
class MyClass:
    def __init__(self):  # 构造函数
        pass
        
    def __str__(self):  # 对象转字符串
        return "MyClass"
        
    def __add__(self, other):  # 加法运算符重载
        return MyClass()
2. 内置属性
__name__    # 模块名
__doc__     # 文档字符串
__file__    # 文件名
__class__   # 对象的类

五、组合应用场景

1. 忽略多个值
# 使用*_忽略多个值
a, *_, b = (1, 2, 3, 4, 5)  # a=1, b=5
2. 类中同时使用不同下划线
class Demo:
    def __init__(self):
        self.public = 1        # 公开属性
        self._protected = 2    # 受保护属性(约定)
        self.__private = 3     # 私有属性(名称修饰)
        
    def __magic__(self):        # 魔法方法
        pass

六、总结对比表

符号用途示例
_临时变量、解释器结果、翻译for _ in range(3)
_var弱私有(约定)self._private_method()
__var名称修饰(强私有)self.__private_var
__var__魔法方法/内置属性__init__, __name__
*_解包时忽略多个值a, *_, b = (1, 2, 3, 4)

注意事项

  1. 不要随意定义魔法方法__var__ 格式是Python保留的,自定义可能导致冲突。
  2. 名称修饰不是真正的私有:仍可通过 _类名__变量名 访问,主要用于避免意外修改。
  3. 遵循社区约定_var__var 的区别是约定俗成的,Python不强制限制访问。

合理使用下划线可以提高代码的可读性和安全性,是Python编程中的重要实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值