Introspección en Python
Preguntarle a un objeto por sí mismo: firma, docstring, código fuente, miembros.
import inspect
def puntaje(tpm: float, meta: float = 90.0, *, estricto: bool = False) -> int:
"""Estrellas de un intento."""
return 3 if tpm >= meta else 1
firma = inspect.signature(puntaje)
print(firma)
print([p.name for p in firma.parameters.values()])
print(firma.parameters["meta"].default)
print(inspect.getdoc(puntaje))
print(len(inspect.getsource(puntaje).splitlines()))
Cómo funciona
firmalee los parámetros y sus valores por defecto.getdocdevuelve el docstring, ya limpio.getsourcedevuelve el código, cuando está disponible.
Palabras clave y builtins usados aquí
booldefelsefloatforifintlenprintreturn
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 381
- Tokens
- 105
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 57 segundos.
Paso 2 de 4 en Medición e introspección; paso 36 de 41 en Herramientas de dominio.