Saltar al contenido principal
🔒 Modo vista previa. Las primeras quince lecciones de Foundations son gratis; esta es Pro. Inicia un trial de 7 días para desbloquear el editor, las pistas AI y el resto del programa. Tarjeta requerida, cancela cuando quieras en Dashboard.Iniciar trial de 7 días →
← CursosSenior Deep-DivesModule 10 · Production idioms (modern Python)typing.Never + assert_never — exhaustiveness checks the compiler enforcespredict147 / 161
+150 XP
Tarea
📝 **Tarea:** Predecir la salida de 5 líneas. Un Color StrEnum tiene 3 variantes. `describe_all` es exhaustivo (se manejan todas las variantes); `describe_partial` solo maneja RED. El seguimiento: describe_all en las 3 variantes tiene éxito e imprime 3 líneas; describe_partial en ROJO imprime "cálido"; describe_partial en VERDE llega a la rama afirmar_never y genera AssertionError, que el intento externo detecta. 📋 Implemente la función anterior. Las pruebas se ejecutan automáticamente. 💡 **Pista:** Vuelve a leer la teoría si te quedas atascado.
Predice la salida

Lee el código con atención

from typing import assert_never
from enum import StrEnum


class Color(StrEnum):
    RED = "red"
    GREEN = "green"
    BLUE = "blue"


def describe_all(c: Color) -> str:
    match c:
        case Color.RED: return "warm"
        case Color.GREEN: return "fresh"
        case Color.BLUE: return "cool"
        case _: assert_never(c)


def describe_partial(c: Color) -> str:
    match c:
        case Color.RED: return "warm"
        case _: assert_never(c)


for c in Color:
    print(describe_all(c))

print(describe_partial(Color.RED))

try:
    describe_partial(Color.GREEN)
except Exception as e:
    print(f"{type(e).__name__} raised")

¿Qué imprimirá el programa? Escribe aquí:

💬 Discusión

Sé el primero en hacer una pregunta o compartir un consejo.
Inicia sesión para unirte a la discusión. Leer es gratis.
Cargando discusión…