Saltar a contenido

Argumentos y Parámetros: Comunicación Eficaz

En el corazón de la programación modular se encuentra la capacidad de enviar datos a nuestras funciones. Esto permite que una función sea una "máquina" genérica que procesa diferentes entradas para producir resultados específicos.


Diferencias Conceptuales: Parámetro vs. Argumento

Aunque en el día a día se usan como sinónimos, existe una distinción técnica que todo desarrollador debe conocer:

  1. Parámetro: Es la variable local definida en la declaración de la función (dentro de los paréntesis de def). Es el "espacio reservado".
  2. Argumento: Es el valor real (un número, un string, una lista) que se le pasa a la función en el momento de la llamada.

Tipos de Argumentos en Python

1. Argumentos Posicionales (Obligatorios)

Son aquellos que deben colocarse en el orden exacto en que fueron definidos. Si cambias el orden, el programa podría procesar los datos de forma incorrecta o fallar. * Regla: Deben declararse antes que cualquier argumento con valor por defecto.

2. Argumentos por Nombre (Keyword Arguments)

Permiten invocar la función especificando explícitamente el nombre del parámetro. Esto elimina la dependencia del orden y hace que el código sea autodocumentado.

crear_usuario(nombre="Ana", edad=28, pais="España")

3. Parámetros por Defecto (Opcionales)

Permiten que una función tenga un comportamiento estándar si el usuario decide no proporcionar ciertos datos. * Importante: Una vez que defines un parámetro con valor por defecto, todos los parámetros a su derecha también deben tener uno.


El Paso por Referencia vs. Valor

Python utiliza un mecanismo llamado "Paso por asignación de objeto". * Objetos Inmutables (int, str, tuple): Se comportan como si se pasaran por valor. Si cambias el parámetro dentro de la función, la variable original fuera de ella no cambia. * Objetos Mutables (list, dict, set): Se pasan por referencia. Si modificas una lista dentro de una función (por ejemplo, usando .append()), la lista original también se verá afectada.

** Advertencia Profesional:** Nunca uses objetos mutables (como listas vacías []) como valores por defecto en los parámetros. Debido a cómo Python carga las funciones, esa lista será la misma para todas las llamadas, lo que genera errores lógicos difíciles de encontrar.


Argumentos de Longitud Variable

A veces, una función debe ser capaz de recibir cualquier cantidad de datos:

  1. *args (Tupla): Captura argumentos posicionales sobrantes. Ideal para funciones matemáticas como sumar_todos(*numeros).
  2. **kwargs (Diccionario): Captura argumentos con nombre que no estaban definidos. Ideal para configuraciones dinámicas.

Reto: El Configurador de Perfiles

Imagina que estás creando un sistema para una red social. Necesitas una función que registre usuarios, pero algunos datos son obligatorios y otros tienen valores estándar.

Instrucciones: 1. Crea una función llamada configurar_perfil. 2. Parámetros: usuario (obligatorio), tema (por defecto 'claro') y notificaciones (por defecto True). 3. La función debe retornar un Diccionario con esta estructura: {'user': usuario, 'theme': tema, 'notify': notificaciones}. 4. Llama a la función solo con el nombre 'Admin' y guarda el resultado en perfil_1. 5. Llama a la función con el nombre 'User99', tema 'oscuro' y notificaciones False, y guarda el resultado en perfil_2.

# Define tu función profesional: