En Python, las funciones pueden recibir datos de entrada a través de argumentos. Los argumentos permiten que las funciones sean más flexibles y reutilizables. En esta sección, exploraremos los diferentes tipos de argumentos que se pueden utilizar en Python, cómo se definen y cómo se utilizan.
Tipos de Argumentos
- Argumentos Posicionales
- Argumentos Nombrados (o por palabra clave)
- Argumentos por Defecto
- Argumentos Arbitrarios
- Argumentos Posicionales
Los argumentos posicionales son los más comunes y se pasan a la función en el mismo orden en que se definen.
def greet(name, age): print(f"Hola, mi nombre es {name} y tengo {age} años.") # Llamada a la función con argumentos posicionales greet("Alice", 30)
Explicación:
name
yage
son argumentos posicionales.- La función
greet
se llama con "Alice" y 30, que se asignan aname
yage
respectivamente.
- Argumentos Nombrados (o por palabra clave)
Los argumentos nombrados se pasan a la función utilizando el nombre del parámetro, lo que permite especificar los argumentos en cualquier orden.
def greet(name, age): print(f"Hola, mi nombre es {name} y tengo {age} años.") # Llamada a la función con argumentos nombrados greet(age=30, name="Alice")
Explicación:
age=30
yname="Alice"
son argumentos nombrados.- El orden de los argumentos no importa cuando se utilizan nombres de parámetros.
- Argumentos por Defecto
Los argumentos por defecto permiten que una función asigne un valor predeterminado a un parámetro si no se proporciona un valor durante la llamada a la función.
def greet(name, age=25): print(f"Hola, mi nombre es {name} y tengo {age} años.") # Llamada a la función con y sin el argumento por defecto greet("Alice") greet("Bob", 30)
Explicación:
age=25
es un argumento por defecto.- Si
age
no se proporciona, se utiliza el valor predeterminado de 25.
- Argumentos Arbitrarios
A veces, no se sabe de antemano cuántos argumentos se pasarán a una función. Python permite manejar estos casos con argumentos arbitrarios.
Argumentos Posicionales Arbitrarios
Se utilizan *args
para pasar un número variable de argumentos posicionales.
def greet(*names): for name in names: print(f"Hola, {name}!") # Llamada a la función con múltiples argumentos greet("Alice", "Bob", "Charlie")
Explicación:
*names
recoge todos los argumentos posicionales en una tupla.- La función puede iterar sobre
names
para procesar cada nombre.
Argumentos Nombrados Arbitrarios
Se utilizan **kwargs
para pasar un número variable de argumentos nombrados.
def greet(**info): for key, value in info.items(): print(f"{key}: {value}") # Llamada a la función con múltiples argumentos nombrados greet(name="Alice", age=30, city="New York")
Explicación:
**info
recoge todos los argumentos nombrados en un diccionario.- La función puede iterar sobre
info
para procesar cada par clave-valor.
Ejercicios Prácticos
Ejercicio 1: Argumentos Posicionales y Nombrados
Escribe una función describe_person
que acepte tres parámetros: name
, age
y city
. La función debe imprimir una descripción de la persona. Llama a la función utilizando tanto argumentos posicionales como nombrados.
def describe_person(name, age, city): print(f"{name} tiene {age} años y vive en {city}.") # Llamada a la función describe_person("Alice", 30, "New York") describe_person(age=25, city="Los Angeles", name="Bob")
Ejercicio 2: Argumentos por Defecto
Escribe una función calculate_area
que acepte dos parámetros: length
y width
, con un valor por defecto de width
igual a 1. La función debe calcular y devolver el área de un rectángulo.
def calculate_area(length, width=1): return length * width # Llamada a la función print(calculate_area(5)) # Output: 5 print(calculate_area(5, 3)) # Output: 15
Ejercicio 3: Argumentos Arbitrarios
Escribe una función summarize
que acepte un número variable de argumentos posicionales y devuelva su suma.
def summarize(*numbers): return sum(numbers) # Llamada a la función print(summarize(1, 2, 3)) # Output: 6 print(summarize(4, 5, 6, 7)) # Output: 22
Resumen
En esta sección, hemos aprendido sobre los diferentes tipos de argumentos en Python: posicionales, nombrados, por defecto y arbitrarios. Estos conceptos son fundamentales para escribir funciones flexibles y reutilizables. Asegúrate de practicar con los ejercicios proporcionados para reforzar tu comprensión.
En la próxima sección, exploraremos las Funciones Lambda, que son funciones anónimas y de una sola línea en Python.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn