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

  1. Argumentos Posicionales
  2. Argumentos Nombrados (o por palabra clave)
  3. Argumentos por Defecto
  4. Argumentos Arbitrarios

  1. 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 y age son argumentos posicionales.
  • La función greet se llama con "Alice" y 30, que se asignan a name y age respectivamente.

  1. 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 y name="Alice" son argumentos nombrados.
  • El orden de los argumentos no importa cuando se utilizan nombres de parámetros.

  1. 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.

  1. 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

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados