/ / En Python, ¿existe un equivalente de "aprobación" para una asignación de variable - python, core

En Python, ¿existe un equivalente de "aprobación" para una asignación de variable - python, core

Estoy usando una función de biblioteca llamadaget_count_and_price que devuelve una tupla de 2 (recuento, precio). En muchos lugares uso tiempo y precio. Sin embargo, en algunos solo necesito tiempo o precio. Así que ahora mismo, si solo necesito contar, asigno a (conteo, precio) y no uso el precio.

Esto funciona muy bien y no causa problemas en sí mismo.

Sin embargo...

Uso Eclipse con PyDev y la nueva versión 1.5 muestra automáticamente errores y advertencias. Una de las advertencias que muestra son las variables no utilizadas. En el ejemplo anterior, marca el precio como no utilizado. Este es el tipo de comportamiento que es genial y realmente aprecio que PyDev haga esto por mí. Sin embargo, me gustaría omitir la asignación de precio por completo. Idealmente, me gustaría algo como:

(count,None) = get_count_and_price()

Ahora, como todos sabemos, no se puede asignar ninguno. ¿Hay algo más que pueda hacer en este caso?

Sé que podría hacer algo como

count = get_count_and_price()[0]

Pero estoy preguntando solo para ver si alguien tiene alguna sugerencia mejor.

Respuestas

29 para la respuesta № 1

Creo que no hay nada de malo en usar el [0]subíndice, pero a veces la gente usa la variable "desechable" _. En realidad, es como cualquier otra variable (con un uso especial en la consola), excepto que algunos usuarios de Python decidieron que fuera "desechable" como una convención.

count, _  = get_count_and_price()

Sobre el problema de PyDev, debe usar el subíndice [0] de todos modos. Pero si realmente desea utilizar _, la única solución es desactivar las advertencias de variables no utilizadas si eso le molesta.


20 para la respuesta № 2

Utilizando _ tal como se propuso por separado puede tener algunos problemas (aunque es en su mayoría bien). Por las pautas de estilo de Python que usamos en el trabajo, normalmente uso count, unused_price = ... ya que pylint está configurado para ignorar las asignaciones a nombres de barras que comienzan con unused_ (y advierta sobre el USO de cualquiera de estos nombres de barras en su lugar! -). Pero no sé cómo instruir. PyDev ¡comportarse de esa manera!


7 para la respuesta № 3

Si va a la ventana Eclipse -> Preferencias ..., puede especificar qué nombres de variables PyDev debe ignorar si "no están en uso (estoy mirando el PyDev 1.5.X más nuevo).

Si va a PyDev -> Editor -> Análisis de código y mira el último campo que dice "No", informe la variable no utilizada si el nombre comienza con "

Ingrese los nombres que desee allí y luego use ese nombre para restringir los nombres de las variables para las cuales PyDev ignorará las advertencias no utilizadas.

Por defecto, parece que PyDev ocultará advertencias de variables no utilizadas para cualquier variable que tenga nombres que comiencen con "ficticio", "_" o "no utilizado".

Como @TokenMacGuy dijo a continuación, "recomendaría no usar solo" _ "porque tiene un significado especial en ciertos escenarios en Python (específicamente se usa en el intérprete interactivo).


3 para la respuesta № 4

A menudo hacemos esto.

count, _ = get_count_and_price()

o esto

count, junk = get_count_and_price()

2 para la respuesta № 5

Prefiero nombrarlo _price en cambio, por estas razones:

  • Resuelve el conflicto con gettext y el prompt interactivo, que ambos usan _

  • Es fácil cambiar de nuevo en price Si terminas por necesitarlo más tarde.

  • Como han señalado otros, el subrayado principal ya tiene una connotación de "interno" o "no utilizado" en muchos idiomas.

Entonces tu código terminaría pareciéndose a esto:

(count, _price) = get_count_and_price()

1 para la respuesta № 6

Voy a ir tras una insignia de Nigromante :)

Usted dijo que está usando PyDev. En PyDev (al menos versiones recientes, no comprobé cuánto tiempo atrás), cualquier nombre de variable que comience con "no utilizado" estará exento de la advertencia de Variable no utilizada. Sin embargo, otras herramientas de análisis estático pueden quejarse (pyflakes sí lo hace, pero parece ignorar esta advertencia en un contexto de desempaquetado de la tupla de todos modos).