Python|Python基础知识必备:最强字符——下划线,你的编程小帮手


Python|Python基础知识必备:最强字符——下划线,你的编程小帮手
文章图片
Python|Python基础知识必备:最强字符——下划线,你的编程小帮手
文章图片
刚开始学Python的时候会发现 , Python里会出现各种各样的下划线 “_” , 而且位置都不相同 , 有时候在名称后面 , 有时候在前面 , 有时候还会在数字中间......这些下划线都分别代表了什么意思?
这里我们将介绍的五种不同情况:
一.单下划线(_)单下划线通常在3种情况下使用:
1.在解析程序中
按照习惯 , 有时候单个独立下划线是用作一个名字 , 来表示某个变量是临时的或无关紧要的 。
_名称指向交互式解释器会话中 , 最后执行的语句结果 。 这首先是由标准CPython解释器完成的 , 其他解析器也紧随其后 。
在下面的代码示例中 , 我将汽车元组拆分为单独的变量 , 但我只对颜色和里程值感兴趣 。但是 , 为了使拆分表达式成功运行 , 我需要将包含在元组中的所有值分配给变量 。在这种情况下 , “_”作为占位符变量可以派上用场:
>>> car = ('red' 'auto' 12 3812.4)
>>> color _ _ mileage = car

>>> color
'red'
>>> mileage
3812.4
>>> _
12

2.作为名称
这与上一点有些关联 , _ 用作一次性的名称 。 这为了让阅读代码的人知道 , 这里分配了某个名称 , 但是不打算使用 。 例如 , 在下面的循环中 , 我们不需要访问正在运行的索引 , 我们可以使用“_”来表示它只是一个临时值:
>>> for _ in range(32):
...print('Hello World.')

3.i18n
我们可以看到 _ 还可以用作函数 。 在这种情况下 , 它通常用于执行国际化和本地化字符串转换查找的函数的名称 。 这似乎源于并遵循 C 语言的相关规则 。 如在Django文档中所见:
from django.http import HttpResponse
from django.utils.translation import gettext as _

def my_view(request):
output = _(\"Welcome to my site.\")
return HttpResponse(output)

在任何还将 _ 用作 i18n 查找和翻译的代码块中 , 都应避免使用 _ 作为一次性使用的名称 。
二.名称前加单下划线(例如_total)名称前的单个下划线用于指定程序员将名称视为“私有” 。 这可以视为一种约定 , 下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用 。。正如Python文档所述:

带有下划线的名称(例如 _spam)应被视为 API 的非公开部分(无论是函数、方法还是数据成员) 。 它应被视为实现细节 , 如有更改 , 恕不另行通知 。
*之所以说是一种约定 , 是因为它实际上对解析程序而言有着某种意义;如果我们从 <module / package> import * , 除非以模块/软件包的 __all__ 列表明确包含它们 , 否则不会导入以 _开头的名称 。 看看下面的例子:
class Test:
def __init__(self):
self.foo = 11
self._bar = 23

三. 名称后的单下划线(例如 total_)一个变量的最合适的名称已经被一个关键字所占用 , 可以附加一个下划线来解决命名冲突:例如 , 如果你想命名某种格式 , 为了避免掩盖 Python 的内置格式 , 你可以将其命名为format_ 。
>>> def make_object(name class):
SyntaxError: \"invalid syntax\"