¿Cuál es el significado de _
después for
en este código?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
¿Cuál es el significado de _
después for
en este código?
if tbh.bag:
n = 0
for _ in tbh.bag.atom_set():
n += 1
len(tbh.bag.atom_set())
(si el valor devuelto tiene un__len__
método) osum(1 for _ in tbh.bag.atom_set())
pylint
otra opción para nombres de variable ficticios hay un prefijodummy_
para el nombre de la variable. Al usar este prefijo conpylint
,pylint
no se emite una advertencia. También puede configurar el patrón variable ficticio parapylint
acomodar cosas como__
.Respuestas:
_
tiene 4 usos convencionales principales en Python:raise forms.ValidationError(_("Please enter a correct username"))
label, has_label, _ = text.partition(':')
.def
olambda
), cuando se fije la firma (por ejemplo, por una devolución de llamada o la API de la clase padre), pero esta implementación función particular no necesita todos los parámetros, como en el código como:callback = lambda _: True
(Durante mucho tiempo, esta respuesta solo enumeró los primeros tres casos de uso, pero el cuarto caso surgió con suficiente frecuencia, como se señala aquí , para que valga la pena enumerarlo explícitamente)
Los últimos casos de uso de "variable desechable o nombre de parámetro" pueden entrar en conflicto con el caso de uso de búsqueda de traducción, por lo que es necesario evitar usarlo
_
como variable desechable en cualquier bloque de código que también lo use para la traducción i18n (muchas personas prefieren un doble guión bajo) ,__
como su variable desechable exactamente por este motivo).fuente
_
es el nombre utilizado para la función que realiza búsquedas de traducción de cadenas de internacionalización y localización. Estoy bastante seguro de que es lagettext
biblioteca C la que estableció esa convención.__
(un doble guión bajo) como mi variable de uso general para evitar conflictos con cualquiera de los dos primeros casos de uso._
usar como nombre de variable desde que comencé a usar Python profesionalmente en 2002.a, __, c = iterable
le dice al lector de inmediato que estamos desempacando una tupla de 3, pero solo usando los valores primero y último. Si en lugar de escribira, b, c = iterable
, el lector (o un código de linter automatizado) pueden esperar razonablemente que todosa
,b
yc
para ser utilizado más adelante (y si no lo son, puede ser un signo de un fallo en algún lugar).Es solo un nombre de variable, y es convencional en Python para usar
_
con variables desechables. Simplemente indica que la variable de bucle no se usa realmente.fuente
_
, deja de mantener permanentemente el valor de salida de la expresión anterior. Esto parece terriblemente inconsistente, y los estándares de Python Lang deben abordar esto. Deben definir_
como un nombre desechable y evitar que se use como un identificador real.El subrayado
_
se considera como variable " No me importa " o " Desechable " en PythonEl intérprete de python almacena el último valor de expresión en la variable especial llamada
_
.El guión bajo
_
también se usa para ignorar los valores específicos. Si no necesita los valores específicos o los valores no se utilizan, simplemente asigne los valores para subrayar.Ignorar un valor al desempacar
Ignorar el índice
fuente
_("Hello world!")
.dis
módulo, descubrí que no había diferencia en el código de bytes . Sin embargo, los beneficios de la legibilidad humana son obvios.Hay 5 casos para usar el guión bajo en Python.
Para almacenar el valor de la última expresión en el intérprete.
Para ignorar los valores específicos. (llamado "no me importa")
Dar significados y funciones especiales al nombre de vartiables o funciones.
Para usar como funciones de 'Internacionalización (i18n)' o 'Localización (l10n)'.
Para separar los dígitos del valor literal del número.
Aquí hay un buen artículo con ejemplos de mingrammer .
fuente
En lo que respecta a los lenguajes Python,
_
no tiene un significado especial. Es un identificador válido como_foo
,foo_
o_f_o_o_
.Cualquier significado especial de
_
es puramente por convención. Varios casos son comunes:Un nombre ficticio cuando una variable no está destinada a ser utilizada, pero la sintaxis / semántica requiere un nombre.
Muchos REPL / shells almacenan el resultado de la última expresión de nivel superior en
builtins._
.Debido a la forma en que se buscan los nombres, a menos que estén sombreados por una
_
definición global o local a la que se_
hace referenciabuiltins._
.Nota: Algunos shells como
ipython
no se asignan abuiltins._
casos especiales_
.En el contexto de internacionalización y localización,
_
se utiliza como un alias para la función de traducción primaria.fuente