Contenido del curso
Calidad y Profesionalismo del Código
Manejo de Datos y Recursos
Optimización y Pruebas
Creación de Aplicaciones de Consola
- 19

UV: Faster Python Dependency Management
07:17 min - 20

How Python Modules Keep Your Code Organized
07:14 min - 21

Organizing Python Code Into Packages
09:06 min - 22

Función enumerate en Python para indexar listas automáticamente
09:31 min - 23

Filtrado de listas con filter en Python
11:44 min - 24

Función map para calcular tiempo de lectura en Python
08:59 min - 25

Conexión de OpenAI API con variables de entorno en Python
11:17 min
Uso de kwargs para crear un cliente de APIs flexible
Resumen
Domina cómo usar parámetros nombrados y dinámicos en Python para construir un API client flexible. Aquí verás cómo los keywords (también llamados kwargs) se reciben como diccionario, cómo combinarlos con args y cómo aplicar el doble asterisco para fusionar configuraciones y seleccionar entre News API y Guardian con una sola función.
¿Qué son keywords y por qué combinarlos con args?
Los keywords se envían con nombre y se reciben con doble asterisco: kwargs. A diferencia de args, que solo capturan valores posicionales, kwargs agrupa parámetros nombrados en un diccionario. Esto permite pasar pares key-value y trabajar con ellos de forma dinámica y clara.
- kwargs es un diccionario. Permite inspeccionar keys y valores de entrada.
- Key-value nombrado. Claridad al invocar funciones y reutilizarlas.
- Combinación con args. Flexibilidad total con parámetros posicionales y nombrados.
Ejemplo base de impresión de keywords:
def ejemplo_keywords(**keywords): print(type(keywords)) # dict print(keywords) # {'llave': 'valor', ...} print('---') # llamada de ejemplo # ejemplo_keywords(llave='valor', api_key='demo')
¿Cómo implementar kwargs en una función flexible?
La idea central: crear una función única que, según el nombre de la API, seleccione el API client correcto, mezcle una configuración base con parámetros dinámicos, y ejecute la llamada. El resultado es una función robusta y reutilizable.
def fetch_news(api_name, *args, **keywords): """ función flexible para conectar con la API. """ # configuración base común a múltiples APIs base_config = { "timeout": ..., # por defecto "retries": ..., # por defecto } # fusión de configuración: base + parámetros nombrados entrantes config = {**base_config, **keywords} # selección de cliente por nombre api_clients = { "newsAPI": news_api_client, # referencia a cliente de News API "Guardian": guardian_client, # referencia a cliente de Guardian } client = api_clients[api_name] return client(*args, **config)
¿Cómo funcionan los diccionarios y el doble asterisco?
- **Desempaquetado con : copiar pares key-value dentro de otro diccionario.
- Mezcla de configuraciones:
{**base_config, **keywords}agrega y sobrescribe de forma limpia. - **Invocación con :
client(*args, **config)pasa parámetros de forma explícita.
¿Qué orden de parámetros es correcto en Python?
- Obligatorios primero: por ejemplo,
api_nameal inicio. - Luego args: parámetros posicionales variables.
- **Al final kwargs: parámetros nombrados y dinámicos.
¿Cómo se selecciona el cliente por nombre?
- Mapa de clientes: un diccionario
api_clientscon el nombre como clave. - Búsqueda directa:
client = api_clients[api_name]elige el ejecutor correcto. - Una sola función: orquesta múltiples fuentes como News API y Guardian.
¿Cómo usarlo con News API y Guardian?
Con una misma función puedes enviar parámetros distintos y obtener resultados de diferentes orígenes. La clave está en pasar keywords específicos de cada servicio, manteniendo una base_config con timeout y retries.
- Ejemplo con News API.
- Ejemplo con Guardian con sección y fecha.
- Misma función, distintos parámetros, mismo flujo.
Invocaciones ilustrativas:
# News API fetch_news( "newsAPI", api_key="demo", query="noticias de Python", ) # Guardian fetch_news( "Guardian", api_key="Demoguardian", section="sports", from_date="2020-10-10", )
Conceptos y habilidades que te llevas:
- **kwargs como diccionario para parámetros nombrados.
- **args para valores posicionales flexibles.
- Key-value explícito para legibilidad y mantenimiento.
- **Desempaquetado con ** para fusionar configuraciones.
- Configuración base con timeout y retries reutilizable.
- Selección de cliente por nombre mediante diccionario de API clients.
- Orden correcto de parámetros: obligatorios, args, **kwargs.
¿Tienes dudas sobre cómo adaptar los parámetros de tu API favorita o cómo estructurar tu base_config? Deja tu pregunta y cuéntanos tu caso para ayudarte a concretarlo.