overload en Python
Varias firmas para una función, para que el verificador sepa qué regresa.
from typing import overload
@overload
def analizar(texto: str) -> int:
...
@overload
def analizar(texto: str, predeterminado: str) -> int | str:
...
def analizar(texto, predeterminado=None):
try:
return int(texto)
except ValueError:
if predeterminado is None:
raise
return predeterminado
print(analizar("42"), analizar("x", "fallback"))
print(analizar.__name__)
Cómo funciona
- Cada stub
@overloaddeclara una forma de llamada. - Después sigue la implementación real, que overload deja sin tipar.
- En tiempo de ejecución solo existe la implementación.
Palabras clave y builtins usados aquí
defexceptifintprintraisereturnstrtry
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 369
- Tokens
- 94
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 51 segundos.
Paso 4 de 4 en Tipado a fondo; paso 44 de 53 en Python pythónico.