Python 作为一种灵活且直观的语言,引入了许多可以简化编码的结构。下划线就是这样的一种结构( _
),一个具有多种用途的特殊字符,范围从变量命名到解释器目的等等。对于新手程序员来说,下划线可能会让人感到困惑,但理解它们的用途可以显着提高你的 Python 编程能力。本文深入探讨了 Python 下划线,揭开了它们的不同用法和意义的神秘面纱。
单下划线
- 作为一次性变量
在Python中,我们经常遇到这样的情况:我们需要迭代一个范围或任何可迭代对象,但我们不打算在循环内使用变量。在这种情况下,单个下划线被用作'丢弃'变量,表明循环变量被有意忽略。
|
for _ in range(5):
print(“你好,Python!”)
|
- 名字之后
在 Python 中,名称后面的单个下划线用作命名约定,以指示名称供内部使用。它表明变量、方法或属性仅供类、模块或函数内部使用,并且不是 API 的一部分。
|
class MyClass:
def __init__(self):
self.公共变量 = “我公开了!”
self._内部变量 = “我是内在的!”
|
尽管 Python 不强制执行这些名称的隐私,但下划线向程序员强烈暗示它是供内部使用的。
双下划线 (Dunder)
- 名字之前
当您看到带有双下划线前缀的名称时( __
),这是 Python 的名称重整方式。这主要是为了避免与子类中的名称发生命名冲突。 Python 自动在名称前加上类名前缀。
|
class MyClass:
def __init__(self):
self.__private_var = “我很私密!”
|
Here, `__private_var
`会被毁坏到`_MyClass__private_var
`,从而避免任何潜在的命名冲突。
- 围绕一个名字(魔术方法)
名称前后的双下划线具有特殊含义。这些都与 Python 的魔法方法有关。这些是您可以定义添加的特殊方法“magic”到您的类,例如重载运算符或实现协议方法。魔术方法是 Python 面向对象特性的重要组成部分。
|
class 魔法班:
def __init__(self, num):
self.num = num
def __str__(self):
return f“一个带有编号 {self.num} 的 MagicClass 实例”
|
在上面的代码中,`__str__
`是一个神奇的方法,它定义了如何将类转换为字符串。
解释器中的单下划线
在Python解释器中,单个下划线还有另一个有趣的用法。它用于保存最后执行的表达式的结果。
The _
给出最后执行的语句的结果,即本例中的 10。
数字文字中的双下划线
Python(从版本 3.6 开始)还允许在数字文本中使用下划线。这纯粹是为了增强人类的可读性。例如,您可以将一百万写为1_000_000,Python 会将其解释为1000000.
|
>>> num = 1_000_000
>>> num
1000000
|
数字文字中的下划线不会影响值;这只是一个可读性功能。
结论
Python 中的下划线绝非无足轻重的细节。它们有明确的用途,具体取决于它们的位置和数量。了解下划线的用法不仅可以帮助您的代码更简洁、更惯用,还可以引导您充分利用 Python 的潜力。快乐Python!