Wat is het doel van de enkele underscore “_” variabele in Python?

Wat is de betekenis van _na forin deze code?

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

Antwoord 1, autoriteit 100%

_heeft 3 belangrijke conventionele toepassingen in Python:

  1. Om het resultaat van de laatst uitgevoerde expressie in een interactief vast te houden
    tolksessie (zie docs). Dit precedent werd geschapen door de standaard CPython
    tolk en andere tolken hebben dit voorbeeld gevolgd

  2. Voor het opzoeken van vertalingen in i18n (zie de
    gettext
    documentatie bijvoorbeeld), zoals in code zoals

    raise forms.ValidationError(_("Please enter a correct username"))
    
  3. Als algemene “wegwerp”-variabelenaam:

    1. Om dat deel aan te geven
      van een functieresultaat wordt opzettelijk genegeerd (conceptueel wordt het weggegooid.), zoals in code zoals:

      label, has_label, _ = text.partition(':')
      
    2. Als onderdeel van een functiedefinitie (met behulp van defof lambda), waarbij
      de handtekening is vast (bijvoorbeeld door een callback of ouderklasse-API), maar
      deze specifieke functie-implementatie heeft niet alle
      parameters, zoals in code zoals:

      def callback(_):
          return True
      

      [Voor een lange tijd heeft dit antwoord dit gebruikscase niet vermeld, maar het kwam vaak genoeg, zoals opgemerkt Hier , om expliciet de moeite waard te zijn.]

    Dit gebruiksbehuizing kan in conflict komen met het gebruik van de vertaalzoekopdracht, dus het is noodzakelijk om te voorkomen met behulp van _als een wegwijkvariabele in elk codeblok dat het ook gebruikt voor i18n vertaling (veel mensen geven er de voorkeur aan Double-underscore, __, zoals hun weggeleide variabele voor precies deze reden).

    Linters erkennen dit gebruik vaak. Bijvoorbeeld year, month, day = date()zal een pluiswaarschuwing verhogen Als dayniet later in de code wordt gebruikt. De fix, als dayecht niet nodig is, is om year, month, _ = date()te schrijven. Hetzelfde met Lambda-functies, lambda arg: 1.0Creëert een functie die één argument nodig heeft, maar niet met behulp van het, dat wordt betrapt door de lint. De fix is ​​om te schrijven lambda _: 1.0. Een ongebruikte variabele verbergt vaak een bug / typo (bijvoorbeeld ingesteld day, maar gebruik dyain de volgende regel).


2, Autoriteit 27%

Het is slechts een variabele naam, en het is conventioneel in Python om _voor wegwijkvariabelen te gebruiken. Het geeft gewoon aan dat de lusvariabele niet daadwerkelijk wordt gebruikt.


3, Autoriteit 12%

Underscore _wordt beschouwd als “het kan me niet schelen ” of “wegwerp ” variabele in python

  • De Python-tolk slaat de laatste expressiewaarde op de speciale variabele met de naam _.

    >>> 10 
    10
    >>> _ 
    10
    >>> _ * 3 
    30
    
  • Het onderstrepingsteken _wordt ook gebruikt om de specifieke waarden te negeren. Als u de specifieke waarden niet nodig hebt of als de waarden niet worden gebruikt, wijst u de waarden toe aan onderstrepingstekens.

    Negeer een waarde bij het uitpakken

    x, _, y = (1, 2, 3)
    >>> x
    1
    >>> y 
    3
    

    Negeer de index

    for _ in range(10):     
        do_something()
    

Antwoord 4, autoriteit 3%

Er zijn 5 gevallen voor het gebruik van het onderstrepingsteken in Python.

  1. Voor het opslaan van de waarde van de laatste uitdrukking in de interpreter.

  2. Voor het negeren van de specifieke waarden. (zogenaamde “I don’t care”)

  3. Om speciale betekenissen en functies te geven aan de naam van variabelen of functies.

  4. Te gebruiken als functies voor ‘internationalisering (i18n)’ of ‘lokalisatie (l10n)’.

  5. Om de cijfers van de letterlijke waarde van het getal te scheiden.

Hieris een mooi artikel met voorbeelden van mingrammer.

Other episodes