Operador Ternario en Python

Python no tiene el ?: de otros lenguajes. Su ternario se escribe con palabras y en otro orden: primero el valor, luego la condición.

La forma

valor = 10
print("El valor es 10" if valor == 10 else "El valor es otro")
salidaEl valor es 10

A if condición else B: vale A si la condición se cumple y B si no. Se lee casi en castellano, «esto si pasa tal cosa, si no lo otro». Como es una expresión, va donde va un valor: dentro de un print, en una asignación o en una f-string.

Donde más luce

n = 1
print(f"{n} archivo{'' if n == 1 else 's'}")
n = 3
print(f"{n} archivo{'' if n == 1 else 's'}")
salida1 archivo
3 archivos

Elegir un valor pequeño en mitad de otra cosa: un plural, un signo, una unidad. Para eso está. Si cada rama tiene que hacer algo distinto, en vez de devolver un valor, lo que toca es un if normal.

El atajo de or, y por qué falla

nombre = ""
print(nombre or "anónimo")

x = 0
print(x or 10)
print(10 if x is None else x)
salidaanónimo
10
0

Verás mucho valor or "por omisión": devuelve el primero si es verdadero y el segundo si no. Con cadenas va bien. Pero el cero también es falso, así que x or 10 convierte un cero legítimo en un diez. Si lo que quieres es «usa esto solo si no hay nada», pregunta por None con el ternario, como en la última línea.

Se pueden anidar —a if x else b if y else c—, pero se lee fatal. Si hay más de una condición, usa un if con elif.

Más información en inglés: The ternary operator in Python.

Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.