Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

684
Vistas
¿Python tiene el operador Elvis?

El operador ternario en muchos idiomas funciona así:

 x = f() ? f() : g()

Donde si f() es veraz, entonces a x se le asigna el valor de f() , de lo contrario, se le asigna el valor de g() . Sin embargo, algunos idiomas tienen un operador elvis más sucinto que es funcionalmente equivalente:

 x = f() ?: g()

En Python, el operador ternario se expresa así:

 x = f() if f() else g()

¿Pero Python tiene el operador Elvis más sucinto?

Tal vez algo como:

 x = f() else g() # Not actually valid python
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Sí

Python tiene el operador elvis. Es el condicional or operador:

 x = f() or g()

f() es evaluado. Si es cierto, entonces a x se le asigna el valor de f() , de lo contrario, a x se le asigna el valor de g() .

Referencia: https://en.wikipedia.org/wiki/Elvis_operator#Analogous_use_of_the_short-circuiting_OR_operator

over 4 years ago · Santiago Trujillo Denunciar

0

NB Python no tiene el operador de fusión nula definido por:

 a if a is not None else b

El operador or en a or b comprueba la veracidad de a que es False cuando a==0 o len(a)==0 u otras situaciones similares. Vea lo que es verdadero y falso

Hay una propuesta para agregar tales operadores PEP 505

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Robᵩ sobre el uso de or es una buena sugerencia. Sin embargo, como comentario a la pregunta original,

 x = f() ? f() : g()

es funcionalmente equivalente a

 x = f() ?: g()

solo si f() no tiene efectos secundarios.

Si, por ejemplo, f() lee desde un flujo o generador, llamarlo dos veces tendrá resultados diferentes que llamarlo una vez. Reescribiendo ligeramente a la sintaxis de Python, la siguiente muestra

 values = (x for x in (1, 2, 3)) def f(): return next(values) def g(): return 42 x = f() if f() else g() print(x)

imprimirá 2, mientras que x = f() or g() imprimirá 1.

Sería mejor formular la pregunta como

 tmp = f() x = tmp ? tmp : g()

o, en Python,

 tmp = f() x = tmp if tmp else g()

o en Python 3.8 y versiones posteriores,

 x = tmp if (tmp := f()) else g()

Los dos últimos ejemplos son equivalentes a

 x = f() or g()

independientemente de los efectos secundarios que pueda tener f() .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda