在python中,单下划线”_”变量的用途是什么?

What is the purpose of the single underscore “_” variable in Python?

在本代码中,for后面的_的含义是什么?

1
2
3
4
if tbh.bag:
   n = 0
   for _ in tbh.bag.atom_set():
      n += 1


_在python中有3种主要的常规用途:

  • 在交互中保存上次执行表达式(/statement)的结果口译员会议。这一先例是由标准CPython制定的。翻译和其他翻译也效仿
  • 对于i18n中的翻译查找(请参见获得文本例如文档),如代码中所示:raise forms.ValidationError(_("Please enter a correct username"))
  • 作为通用的"一次性"变量名,用于指示该部分函数的结果被故意忽略,例如在以下代码中:label, has_label, _ = text.partition(':')
  • 后两个目的可能会发生冲突,因此有必要避免在任何代码块中使用_作为一次性变量,这些代码块也使用它进行i18n翻译(许多人更喜欢使用双下划线__作为一次性变量,原因正是如此)。


    它只是一个变量名,在Python中,使用_作为一次性变量是常规的做法。它只是表示循环变量实际上没有被使用。


    下划线_在python中被认为是"i don't care"或"throwaway"变量。

    • python解释器将最后一个表达式值存储到名为_的特殊变量中。

      1
      2
      3
      4
      5
      6
      7
      8
      >>> 10
      10

      >>> _
      10

      >>> _ * 3
      30
    • 下划线_也用于忽略特定值。如果您不需要特定的值或不使用这些值,只需将这些值赋给下划线即可。

      解包时忽略值

      1
      2
      3
      4
      5
      6
      7
      x, _, y = (1, 2, 3)

      >>> x
      1

      >>> y
      3

      忽略索引

      1
      2
      for _ in range(10):    
          do_something()


    在Python中使用下划线有5种情况。

  • 用于在解释器中存储最后一个表达式的值。

  • 忽略特定值。(所谓"我不在乎")。

  • 赋予变量或函数的名称特殊的含义和功能。

  • 用作"国际化(i18n)"或"本地化(l10n)"功能。

  • 分隔数字文本值的位数。

  • 这是一篇很好的文章,有明格拉默的例子。