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_name al 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_clients con 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.