一文详细聊一聊Python中的下划线“_”们

 更新时间:2024年12月09日 09:46:23   作者:moz与京  
Python中的下划线(_)有多种用途,包括特殊方法、内部变量、避免关键字冲突、名称修饰、临时变量和忽略变量等,这篇文章主要介绍了Python中的一些下划线“_”们,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

随便拿一份Python代码,几乎都可以看到很多“_”的身影。

在Python中,下划线(_)有多种用途和含义,具体取决于它们的位置和使用方式。在这里都列举出来方便大家对照查看:

1. __xxx__(双下划线前后)

这种形式通常用于特殊方法和属性,也称为“魔法方法”或“双下划线方法”。这些方法和属性是Python内置的,具有特殊的含义和用途。例如:

  • __init__:类的初始化方法。
  • __str__:返回对象的字符串表示形式。
  • __len__:返回对象的长度。
  • __add__:定义对象的加法行为。
class MyClass: 
    def __init__(self, value): 
        self.value = value 
    def __str__(self): 
        return f"MyClass with value {self.value}" 

obj = MyClass(10) 
print(obj) 
# 输出: MyClass with value 10

2. _xxx(单下划线前缀)

单下划线前缀通常用于表示内部变量或方法,提示开发者这些变量或方法是内部实现的一部分,不应该直接访问或修改。这是一种命名约定,并不会真正限制访问。

class MyClass:
    def __init__(self, value):
        self._internal_value = value

    def get_value(self):
        return self._internal_value

obj = MyClass(10)
print(obj._internal_value)  # 输出: 10

3. xxx_(单下划线后缀)

单下划线后缀通常用于避免与Python关键字冲突。例如,如果你有一个变量名与Python关键字冲突,可以使用单下划线后缀来避免冲突。

class_ = "MyClass"
print(class_) 
# 输出: MyClass

4. __xxx(双下划线前缀)

双下划线前缀会触发名称修饰(name mangling),将变量或方法名修改为_ClassName__xxx,以避免子类意外覆盖父类的私有变量或方法。这种方式提供了一种弱的“私有”机制。

class MyClass:
    def __init__(self, value):
        self.__private_value = value

    def get_value(self):
        return self.__private_value

obj = MyClass(10)
print(obj._MyClass__private_value)  # 输出: 10

5. _(单下划线)

单下划线通常用作临时变量或忽略变量的占位符。例如,在循环中忽略循环变量,或在解包时忽略某些值。

for _ in range(5): 
    print("Hello") 

a, _, c = (1, 2, 3) 
print(a, c) # 输出: 1 3

6. __(双下划线)

双下划线通常不单独使用,但在某些情况下可能会出现在特殊方法或属性中。例如,__all__用于定义模块的公共接口。

__all__ = ["MyClass", "my_function"]

7. _xxx_(单下划线前后)

这种形式通常不常见,但有时用于表示内部变量或方法,类似于单下划线前缀。

class MyClass:
     def __init__(self, value): 
        self._value_ = value 
    def get_value(self): 
        return self._value_ 

obj = MyClass(10) 
print(obj._value_) # 输出: 10

总结

  • __xxx__:特殊方法和属性。
  • _xxx:内部变量或方法。
  • xxx_:避免与Python关键字冲突。
  • __xxx:名称修饰,提供弱的“私有”机制。
  • _:临时变量或忽略变量的占位符。
  • __:通常不单独使用,但在特殊方法或属性中可能出现。
  • _xxx_:内部变量或方法,类似于单下划线前缀。

顺便提一下其他的除了运算符以外的常见符号:

# 注释
a = [1, 2, 3]  # 列表
b = (1, 2, 3)  # 元组
c = {1, 2, 3}  # 集合
d = {'a': 1, 'b': 2}  # 字典

# 函数调用
def my_function(x):
    return x + 1

print(my_function(5))  # 输出: 6

# 切片
print(a[1:3])  # 输出: [2, 3]

# 集合操作
e = {3, 4, 5}
print(c | e)  # 输出: {1, 2, 3, 4, 5}
print(c & e)  # 输出: {3}
print(c - e)  # 输出: {1, 2}
print(c ^ e)  # 输出: {1, 2, 4, 5}
  • #:注释
  • \:续行符
  • @:装饰器
  • ::用于切片、字典键值对、函数定义、类定义等
  • .:属性访问
  • ,:元组和参数分隔符
  • ;:语句分隔符(通常不推荐使用)
  • ():元组、函数调用、优先级
  • []:列表、索引、切片
  • {}:字典、集合
  • |:集合并集
  • &:集合交集
  • -:集合差集
  • ^:集合对称差集

到此这篇关于Python中下划线_们的文章就介绍到这了,更多相关Python的下划线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python抓取静态网页数据的完整指南

    Python抓取静态网页数据的完整指南

    静态网页是指网页的内容在服务器上被创建和存储时就已经完全确定好了,本文将和大家详细讲讲如何使用Python抓取静态网页数据,感兴趣的小伙伴可以了解下
    2025-11-11
  • 在Django中创建自己的自定义用户模型

    在Django中创建自己的自定义用户模型

    这篇文章主要介绍了在Django中创建自己的自定义用户模型,创建自己的自定义用户模型至关重要。将来,如果要对模型进行一些更改,则可以轻松进行这些更改。不然我们可能必须对模型进行一些更改,而且代码的某些部分也将被更改,下面一起进入文章里哦阿姐个表格的详细内容吧
    2022-01-01
  • 教你学会通过python的matplotlib库绘图

    教你学会通过python的matplotlib库绘图

    今天教大家如何学会通过python的matplotlib库绘图,文中有非常详细的图文解说及代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Python面向对象之继承和组合用法实例分析

    Python面向对象之继承和组合用法实例分析

    这篇文章主要介绍了Python面向对象之继承和组合用法,结合实例形式分析了Python面向对象程序设计中组合与继承的相关原理、使用方法及操作注意事项,需要的朋友可以参考下
    2018-08-08
  • python使用phoenixdb操作hbase的方法示例

    python使用phoenixdb操作hbase的方法示例

    这篇文章主要介绍了python使用phoenixdb操作hbase的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • python循环引用和解决过程

    python循环引用和解决过程

    文章讨论了在Python中解决循环引用问题的几种方法,包括延迟导入、使用`importlib`、重构代码和类型提示的前向引用,这些方法可以帮助开发者避免导入循环导致的错误,并使代码更加模块化和易于维护
    2025-12-12
  • 关于opencv读取和写入路径有汉字的处理方式

    关于opencv读取和写入路径有汉字的处理方式

    这篇文章主要介绍了关于opencv读取和写入路径有汉字的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python 的 with 语句详解

    Python 的 with 语句详解

    这篇文章主要介绍了Python 的 with 语句,本文详细讲解了with语句、with语句的历史、with语句的使用例子等,需要的朋友可以参考下
    2014-06-06
  • Python通过PyMuPDF高效处理PDF文档的操作方法

    Python通过PyMuPDF高效处理PDF文档的操作方法

    PyMuPDF(又称 fitz)是一个功能强大的Python库,用于处理PDF、XPS、EPUB、MOBI等文档格式,它基于MuPDF(轻量级 PDF 渲染引擎),提供高效的文本提取、渲染、编辑和文档分析功能,所以本文给大家介绍了Python通过PyMuPDF高效处理PDF文档的操作方法
    2025-11-11
  • 浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点

    浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点

    这篇文章主要介绍了浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论