一文详细聊一聊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的下划线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Keras 数据增强ImageDataGenerator多输入多输出实例
这篇文章主要介绍了Keras 数据增强ImageDataGenerator多输入多输出实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07一文带你搞懂Python中isinstance和type的区别
在Python中,我们经常需要检查一个对象的类型,Python提供了两种方法来获取对象的类型:isinstance和type,这两种方法有什么区别呢,本文将详细介绍这两种方法的区别和使用,需要的朋友可以参考下2023-06-06
最新评论