Paso de parametros indeterminados
1. Qué son los parámetros indeterminados? #
En Python, a veces no sabes de antemano cuántos argumentos necesitará recibir una función. Para manejar este tipo de situaciones, puedes usar parámetros indeterminados. Esto te permite definir funciones que aceptan una cantidad variable de argumentos.
2. Tipos de parámetros indeterminados #
*args: Se usa para recibir una cantidad variable de argumentos posicionales. Los argumentos se pasan como una tupla.**kwargs: Se usa para recibir una cantidad variable de argumentos con nombre (o argumentos de palabra clave). Los argumentos se pasan como un diccionario.
3. Ejemplos de uso de parámetros indeterminados #
Usando args para parámetros posicionales #
1def sumar_todos(*args): 2 suma = sum(args) 3 print(f"La suma de los números es: {suma}") 4 5# Llamar a la función con diferentes cantidades de argumentos 6sumar_todos(1, 2, 3) 7sumar_todos(5, 10, 15, 20)Salida de consola La suma de los números es: 6 La suma de los números es: 50
- ¿Qué hace este código?:
- Define la función
sumar_todos(*args), que acepta una cantidad variable de números y los suma. - Se llama a la función con diferentes cantidades de números.
- Define la función
Usando kwargs para parámetros con nombre #
1def mostrar_informacion(**kwargs): 2 for clave, valor in kwargs.items(): 3 print(f"{clave}: {valor}") 4 5# Llamar a la función con diferentes cantidades de argumentos con nombre 6mostrar_informacion(nombre="Ana", edad=30) 7mostrar_informacion(nombre="Carlos", profesion="Ingeniero", ciudad="Madrid")Salida de consola nombre: Ana edad: 30 nombre: Carlos profesion: Ingeniero ciudad: Madrid
- ¿Qué hace este código?:
- Define la función
mostrar_informacion(**kwargs), que acepta una cantidad variable de argumentos con nombre (clave-valor). - Se llama a la función con diferentes cantidades de argumentos con nombre.
- Define la función
Combinando args y kwargs en una función #
1def combinar(*args, **kwargs): 2 print("Argumentos posicionales:", args) 3 print("Argumentos con nombre:", kwargs) 4 5# Llamar a la función con ambos tipos de argumentos 6combinar(1, 2, 3, nombre="Ana", edad=25)Salida de consola Argumentos posicionales: (1, 2, 3) Argumentos con nombre: {'nombre': 'Ana', 'edad': 25}
- ¿Qué hace este código?:
- Define la función
combinar(*args, **kwargs), que acepta tanto una cantidad variable de argumentos posicionales como de argumentos con nombre. - Se llama a la función con ambos tipos de argumentos.
- Define la función
4. Por qué usar parámetros indeterminados? #
Los parámetros indeterminados son útiles cuando:
- No sabes cuántos argumentos se necesitarán pasar a la función.
- Quieres que tu función sea más flexible y pueda manejar diferentes tipos de entradas.
Resumen del tema
Conceptos clave #
- Argumentos Posicionales Arbitrarios (
*args): empaqueta un número indeterminado de argumentos posicionales en una tuplaargs. - Argumentos Nombrados Arbitrarios (
**kwargs): empaqueta argumentos por palabra clave en un diccionariokwargs. - Orden de Parámetros en Firmas:
def func(posicionales, *args, por_defecto=val, **kwargs):. - Desempaquetado en Llamadas: usar
*listay**diccionariopara expandir colecciones al invocar funciones.
Qué debes recordar #
Usa *args para recibir tuplas de argumentos posicionales variables y **kwargs para recibir diccionarios de argumentos con nombre.