web-dev-qa-db-fra.com

Quel est le but de la variable de soulignement simple "_" en Python?

Quelle est la signification de _ après for dans ce code?

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

_ a 4 utilisations conventionnelles principales en Python:

  1. Pour conserver le résultat de la dernière expression exécutée (/ statement) dans une session d'interpréteur interactif. Ce précédent a été créé par l’interprète standard CPython et d’autres interprètes ont emboîté le pas.
  2. Pour la recherche de traduction dans i18n (voir la documentation gettext par exemple), comme dans un code comme: raise forms.ValidationError(_("Please enter a correct username"))
  3. Nom de variable "jetable" d'usage général pour indiquer qu'une partie du résultat d'une fonction est délibérément ignorée (conceptuellement, elle est ignorée.), Comme dans un code tel que: label, has_label, _ = text.partition(':').
  4. Dans le cadre d'une définition de fonction (en utilisant def ou lambda), où la signature est fixée (par exemple par un API de rappel ou de classe parent), mais cette implémentation de fonction particulière ne nécessite pas tous les éléments paramètres, comme dans le code comme: callback = lambda _: True

(Pendant longtemps, cette réponse ne répertoriait que les trois premiers cas d'utilisation, mais le quatrième cas est apparu assez souvent, comme indiqué ici , pour être répertorié explicitement)

Les derniers cas d'utilisation de "variable ou nom de paramètre à jeter" peuvent entrer en conflit avec le cas d'utilisation de recherche de traduction, il est donc nécessaire d'éviter d'utiliser _ comme variable à jeter dans tout bloc de code qui l'utilise également pour la traduction i18n (beaucoup de personnes préférez un double soulignement, __, comme leur variable à jeter immédiatement pour cette raison).

703
ncoghlan

C'est juste un nom de variable, et il est classique dans python d'utiliser _ pour les variables à jeter. Cela indique simplement que la variable de boucle n'est pas réellement utilisée.

182
gsteff

Le trait de soulignement _ est considéré comme une variable "je ne m'en soucie pas" ou "rejetée" en Python

  • L’interprète python enregistre la dernière valeur d’expression dans la variable spéciale appelée _.

    >>> 10 
    10
    
    >>> _ 
    10
    
    >>> _ * 3 
    30
    
  • Le trait de soulignement _ sert également à ignorer les valeurs spécifiques. Si vous n'avez pas besoin des valeurs spécifiques ou si les valeurs ne sont pas utilisées, affectez simplement les valeurs au trait de soulignement.

    Ignorer une valeur lors de la décompression

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

    Ignore l'index

    for _ in range(10):     
        do_something()
    
61
Ashish Sahu

Il y a 5 cas d'utilisation du trait de soulignement en Python.

  1. Pour stocker la valeur de la dernière expression dans l'interpréteur.

  2. Pour ignorer les valeurs spécifiques. (soi-disant "je m'en fous")

  3. Donner des significations et des fonctions spéciales pour nommer des variables ou des fonctions.

  4. À utiliser comme fonctions d’internationalisation (i18n) ou de localisation (l10n).

  5. Pour séparer les chiffres de la valeur littérale numérique.

Ici est un article de Nice avec des exemples de mingrammer .

16
Reck