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

后端 未结 5 1636
后悔当初
后悔当初 2020-11-21 04:04

What is the meaning of _ after for in this code?

if tbh.bag:
   n = 0
   for _ in tbh.bag.atom_set():
      n += 1
5条回答
  •  粉色の甜心
    2020-11-21 04:46

    As far as the Python languages is concerned, _ has no special meaning. It is a valid identifier just like _foo, foo_ or _f_o_o_.

    Any special meaning of _ is purely by convention. Several cases are common:

    • A dummy name when a variable is not intended to be used, but a name is required by syntax/semantics.

      # iteration disregarding content
      sum(1 for _ in some_iterable)
      # unpacking disregarding specific elements
      head, *_ = values
      # function disregarding its argument
      def callback(_): return True
      
    • Many REPLs/shells store the result of the last top-level expression to builtins._.

      The special identifier _ is used in the interactive interpreter to store the result of the last evaluation; it is stored in the builtins module. When not in interactive mode, _ has no special meaning and is not defined. [source]

      Due to the way names are looked up, unless shadowed by a global or local _ definition the bare _ refers to builtins._ .

      >>> 42
      42
      >>> f'the last answer is {_}'
      'the last answer is 42'
      >>> _
      'the last answer is 42'
      >>> _ = 4  # shadow ``builtins._`` with global ``_``
      >>> 23
      23
      >>> _
      4
      

      Note: Some shells such as ipython do not assign to builtins._ but special-case _.

    • In the context internationalization and localization, _ is used as an alias for the primary translation function.

      gettext.gettext(message)

      Return the localized translation of message, based on the current global domain, language, and locale directory. This function is usually aliased as _() in the local namespace (see examples below).

提交回复
热议问题