python中下划线的使用方法有哪些

  介绍

今天就跟大家聊聊有关python中下划线的使用方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

python中_字符的不同用法。就像python中的许多其他内容一样,我们会看到“_”的不同用法主要是惯例问题。这里我们将介绍的几种不同情况:

    <李>单下划线(例如_)李 <>李名称前加一个下划线(例如_total)李 <>李名称后加一个下划线(例如total_) <李>数字文字中的单个下划线(例如100 _000)李 <>李名称前加上双下划线(例如__total)李 <>李名称前后加双下划线(例如__init__)
    ,<强>一。单下划线(_)

单下划线通常在3种情况下使用:

<强> 1。在解析程序中

_名称指向交互式解释器会话中,最后执行的语句结果。这首先是由标准CPython的解释器完成的,其他解析器也紧随其后。

在祝辞祝辞,_    Traceback  (most  recent  call 最后):,   File 才能“& lt; stdin>“, line  1, & lt; module>拷贝,   NameError: name  & # 39; _ # 39;, is  not  defined    在祝辞祝辞,42岁,   在祝辞祝辞,_    42,   祝辞祝辞祝辞,& # 39;好吧! & # 39;,if  _  else  & # 39; (& # 39;,   & # 39;好吧! & # 39;,   在祝辞祝辞,_    & # 39;好吧! & # 39;,

<强> 2。作为名称

这与上一点有些关联,_用作一次性的名称。这为了让阅读代码的人知道,这里分配了某个名称,但是不打算使用,例如,你可能对循环计数器的实际值不感兴趣:

n =, 42岁,   for  _ 范围(n):拷贝,   ,,,do_something (),

<强> 3。i18n

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

得到django.http  import  HttpResponse    得到django.utils.translation  import  gettext  as  _    ,   def  my_view(请求):   ,,,output =, _ (“Welcome 用my 干净自己的网站),   ,,,return  HttpResponse(输出),

第二个和第三个用法可能会发生冲突,因此,在任何还将_用作i18n查找和翻译的代码块中,都应避免使用_作为一次性使用的名称。

名称前的单个下划线用于指定程序员将名称视为“私”有。这可以视为一种约定,方便阅读代码的人知道以_开头的名称供内部使用。正如Python文档所述:

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

名称后面的单个下划线用于避免名称遮盖另一个名称,当然是惯例。例如,如果你想命名某种格式,为了避免掩盖Python的内置格式,你可以将其命名为format_。

四。数字字面中的单下划线(例如100 _000)

PEP 515指数建议扩展Python的语法,以便下划线可以用作整体,浮点和复杂数字文本中数字分组的可视分隔符,理由是:

这是其他现代语言的常见特征,可以帮助提高较长的文字或文本的可读性,其值应清楚地分隔成部分,如字节或十六进制表示法中的单词。

因此,我们可以执行以下操作::

#,十进制数按千分组,   时间=amount  10 _000_000.0    ,   #,按字对十六进制地址进行分组,   时间=addr  0 xcafe_f00d    ,   #,用二进制文字将位分组为半字节,   时间=flags  0 b_0011_1111_0100_1110    ,   #相同,用于字符串转换,   flags =, int (& # 39; 0 b_1111_0000& # 39;,, 2),

在名称(特别是方法名称)前使用双下划线(__)不是约定,只是对解析程序有特殊的意义.Python管理这些名称,它用于避免名称与子类定义的名称冲突。正如Python文档所指出的那样,任何形式为__spam的标识符(至少两个前导下划线,并且最多一个尾随下划线)在文本上均被_classname__spam替换,其中类名是当前类名,其中前导下划线被去除。

以以下示例为例:

在祝辞祝辞,class (对象):,   ,,,,,,def  _internal_use(自我):,   ,,,,,,,,,,pass    ,,,,,,def  __method_name(自我):,   ,,,,,,,,,,pass    ……,,   在祝辞祝辞,dir (()),   [& # 39;_A__method_name& # 39;,,…,, & # 39; _internal_use& # 39;],

python中下划线的使用方法有哪些