Quelle est la signification d’ _
après for
dans ce code?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
Quelle est la signification d’ _
après for
dans ce code?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
len(tbh.bag.atom_set())
(si la valeur retournée a une__len__
méthode) ousum(1 for _ in tbh.bag.atom_set())
pylint
une autre option pour les noms de variables factices, il y a un préfixedummy_
pour le nom de variable. L'utilisation de ce préfixe avecpylint
,pylint
n'émet pas d'avertissement. Vous pouvez également configurer le modèle de variable factice pourpylint
s'adapter à des choses comme__
.Réponses:
_
a 4 utilisations conventionnelles principales en Python:raise forms.ValidationError(_("Please enter a correct username"))
label, has_label, _ = text.partition(':')
.def
oulambda
), où la signature est fixée (par exemple par un rappel ou une API de classe parent), mais cette implémentation de fonction particulière n'a pas besoin de tous les paramètres, comme dans le code comme:callback = lambda _: True
(Pendant longtemps, cette réponse n'a énuméré que les trois premiers cas d'utilisation, mais le quatrième cas est apparu assez souvent, comme indiqué ici , pour mériter une liste explicite)
Les derniers cas d'utilisation de "variable jetable ou nom de paramètre" peuvent entrer en conflit avec le cas d'utilisation de recherche de traduction, il est donc nécessaire d'éviter d'utiliser
_
comme variable jetable dans tout bloc de code qui l'utilise également pour la traduction i18n (de nombreuses personnes préfèrent un double soulignement ,__
comme leur variable jetable précisément pour cette raison).la source
_
est le nom utilisé pour la fonction qui effectue les recherches de traduction de chaînes d'internationalisation et de localisation. Je suis presque sûr que c'est lagettext
bibliothèque C qui a établi cette convention.__
(un double trait de soulignement) comme variable jetable à usage général pour éviter tout conflit avec l'un des deux premiers cas d'utilisation._
utilisées comme nom de variable depuis que j'ai commencé à utiliser Python professionnellement en 2002.a, __, c = iterable
indique immédiatement au lecteur que nous décompressons un triplet, mais uniquement en utilisant les première et dernière valeurs. Si l' on place écrirea, b, c = iterable
, le lecteur (ou un code automatisé linter) peut raisonnablement attendre tousa
,b
etc
à utiliser plus tard (et si elles ne sont pas, il peut être un signe d'un endroit bug).C'est juste un nom de variable, et il est classique en python à utiliser
_
pour les variables jetables. Cela indique simplement que la variable de boucle n'est pas réellement utilisée.la source
_
, il arrête définitivement de conserver la valeur de sortie de l'expression précédente. Cela semble horriblement incohérent, et les normes Python lang doivent y remédier. Ils doivent simplement définir_
comme un nom jetable et l'empêcher d'être utilisé comme véritable identifiant.Le soulignement
_
est considéré comme une variable " Je m'en fiche " ou " Throwaway " en PythonL'interpréteur python stocke la dernière valeur d'expression dans la variable spéciale appelée
_
.Le trait de soulignement
_
est également utilisé pour 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 du déballage
Ignorer l'index
la source
_("Hello world!")
.dis
module, j'ai trouvé qu'il n'y avait aucune différence dans le bytecode. Les avantages de la lisibilité humaine sont cependant évidents.Il existe 5 cas d'utilisation du trait de soulignement en Python.
Pour stocker la valeur de la dernière expression dans l'interpréteur.
Pour ignorer les valeurs spécifiques. (soi-disant «je m'en fiche»)
Donner des significations et des fonctions spéciales au nom des vartiables ou des fonctions.
A utiliser comme fonctions «Internationalisation (i18n)» ou «Localisation (l10n)».
Pour séparer les chiffres de la valeur littérale du nombre.
Voici un bel article avec des exemples de mingrammer .
la source
En ce qui concerne les langages Python,
_
n'a pas de signification particulière. C'est un identifiant valide comme_foo
,foo_
ou_f_o_o_
.Toute signification particulière de
_
est purement conventionnelle. Plusieurs cas sont courants:Un nom factice lorsqu'une variable n'est pas destinée à être utilisée, mais qu'un nom est requis par la syntaxe / sémantique.
De nombreux REPL / shells stockent le résultat de la dernière expression de niveau supérieur dans
builtins._
.En raison de la façon dont les noms sont recherchés, à moins qu'ils ne soient masqués par une
_
définition globale ou locale, le nu_
fait référencebuiltins._
.Remarque: certains shells tels que ceux qui
ipython
ne sont pas attribuésbuiltins._
mais dans un cas spécial_
.Dans le contexte internationalisation et localisation,
_
est utilisé comme alias pour la fonction de traduction principale.la source