广告位联系
返回顶部
分享到

Python中的下划线“_”们介绍

python 来源:互联网 作者:佚名 发布时间:2024-12-10 23:07:37 人浏览
摘要

随便拿一份Python代码,几乎都可以看到很多_的身影。 在Python中,下划线(_)有多种用途和含义,具体取决于它们的位置和使用方式。在这里都列举出来方便大家对照查看: 1.__xxx__(双下划线

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

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

1. __xxx__(双下划线前后)

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

  • __init__:类的初始化方法。
  • __str__:返回对象的字符串表示形式。
  • __len__:返回对象的长度。
  • __add__:定义对象的加法行为。

1

2

3

4

5

6

7

8

9

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(单下划线前缀)

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

1

2

3

4

5

6

7

8

9

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关键字冲突,可以使用单下划线后缀来避免冲突。

1

2

3

class_ = "MyClass"

print(class_)

# 输出: MyClass

4. __xxx(双下划线前缀)

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

1

2

3

4

5

6

7

8

9

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. _(单下划线)

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

1

2

3

4

5

for _ in range(5):

    print("Hello")

 

a, _, c = (1, 2, 3)

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

6. __(双下划线)

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

1

__all__ = ["MyClass", "my_function"]

7. _xxx_(单下划线前后)

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

1

2

3

4

5

6

7

8

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_:内部变量或方法,类似于单下划线前缀。

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# 注释

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}

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

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 使用python编写一个自动化部署工具

    使用python编写一个自动化部署工具
    效果 起因 现在springboot项目的自动化部署已经非常普遍,有用Jenkins的,有用git钩子函数的,有用docker的...等等。这段时间在玩python,想着用
  • Python中的下划线“_”们介绍
    随便拿一份Python代码,几乎都可以看到很多_的身影。 在Python中,下划线(_)有多种用途和含义,具体取决于它们的位置和使用方式。在这
  • OpenCV-Python给图像去除水印多种方法
    去除水印的过程与添加水印相反,它涉及到图像修复、颜色匹配和区域填充等技术。OpenCV-Python 提供了多种方法来处理不同类型的水印,包括
  • Python连接和操作Elasticsearch

    Python连接和操作Elasticsearch
    一、服务器端配置 在开始之前,确保你的 Elasticsearch 服务已经在服务器上正确安装和配置。 以下是一些基本的配置步骤: 1. 修改 Elasticse
  • Python ArcPy实现栅格图像文件由HDF格式批量转换为

    Python ArcPy实现栅格图像文件由HDF格式批量转换为
    首先,来看看我们想要实现的需求。 在一个名为HDF的文件夹下,有五个子文件夹;每一个子文件夹中,都存储了大量的.hdf格式的栅格遥感影
  • python随机种子ranrandom seed的使用介绍
    在Python中启用随机种子(random seed)是为了确保你的随机数生成过程是可重复的。通过设置随机种子,你可以保证每次运行代码时生成的随机
  • Numpy判断数组是否全0的三种方法

    Numpy判断数组是否全0的三种方法
    1numpy.any() numpy.any()函数用于检查一个numpy数字是否存在任何一个非0元素,因此将numpy.any()的结果取反即得numpy数组是否全0的结果。例如: 1
  • python实现字符串逆序输出的几种方法
    方法一:使用切片(Slicing) 1 2 3 4 5 6 def reverse_string(s): return s[::-1] s=str(input(请输入字符串:)) reversed_string=reverse_string(s) print(reversed_string) 在
  • python删除目录的三种方法介绍
    一、os.rmdir(path) 删除目录 path,path必须是个空目录,否则抛出OSError异常。 二、os.removedirs(path) 递归地删除目录。要求每一级目录都为空,才
  • Python内置模块UUID的具体使用介绍
    uuid模块是Python标准库的一部分,它提供了一种生成通用唯一识别码(Universally Unique Identifier,简称UUID)的方法,UUID是一种标识符标准,其目的
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计