python
主页 > 脚本 > python >

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

2024-12-10 | 佚名 | 点击:

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

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

1. __xxx__(双下划线前后)

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

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

总结

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

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}

原文链接:
相关文章
最新更新