Funciones en Python
Las funciones son bloques de código reutilizables que realizan una tarea específica. Te permiten organizar tu código, evitar repetición y hacerlo más legible.
Conceptos Básicos
1. Definir una función
Se usa la palabra clave def:
def nombre_funcion(parametros):
# código de la función
return resultado2. Función simple sin parámetros
def saludar():
print("¡Hola mundo!")
# Llamar la función
saludar() # Output: ¡Hola mundo!3. Función con parámetros
def saludar_persona(nombre):
print(f"¡Hola {nombre}!")
saludar_persona("Ana") # Output: ¡Hola Ana!4. Función con retorno
def sumar(a, b):
resultado = a + b
return resultado
suma = sumar(5, 3)
print(suma) # Output: 8Tipos de Parámetros
Parámetros posicionales
def informacion_persona(nombre, edad, ciudad):
print(f"{nombre} tiene {edad} años y vive en {ciudad}")
informacion_persona("Carlos", 25, "Madrid")Parámetros con valores por defecto
def saludar(nombre, mensaje="Hola"):
print(f"{mensaje}, {nombre}!")
saludar("María") # Output: Hola, María!
saludar("Juan", "Buenos días") # Output: Buenos días, Juan!Parámetros con nombre (keyword arguments)
def crear_usuario(nombre, edad, email, activo=True):
print(f"Usuario: {nombre}, Edad: {edad}, Email: {email}, Activo: {activo}")
# Diferentes formas de llamar la función
crear_usuario("Ana", 30, "ana@email.com")
crear_usuario(nombre="Pedro", email="pedro@email.com", edad=25)
crear_usuario("Luis", edad=35, activo=False, email="luis@email.com")Número variable de argumentos
# *args - recibe múltiples argumentos como tupla
def sumar_todos(*args):
total = 0
for numero in args:
total += numero
return total
print(sumar_todos(1, 2, 3)) # Output: 6
print(sumar_todos(5, 10, 15, 20)) # Output: 50
# **kwargs - recibe múltiples argumentos con nombre como diccionario
def mostrar_info(**kwargs):
for clave, valor in kwargs.items():
print(f"{clave}: {valor}")
mostrar_info(nombre="Ana", edad=30, ciudad="Barcelona")Ejemplos Prácticos
1. Función para calcular área
def calcular_area_rectangulo(largo, ancho):
return largo * ancho
area = calcular_area_rectangulo(10, 5)
print(f"El área es: {area}") # Output: El área es: 502. Función con múltiples retornos
def operaciones_matematicas(a, b):
suma = a + b
resta = a - b
multiplicacion = a * b
division = a / b if b != 0 else "Error: división por cero"
return suma, resta, multiplicacion, division
resultados = operaciones_matematicas(10, 2)
print(resultados) # Output: (12, 8, 20, 5.0)3. Función con validación
def es_par(numero):
"""
Función que verifica si un número es par
"""
if numero % 2 == 0:
return True
else:
return False
print(es_par(4)) # Output: True
print(es_par(7)) # Output: FalseDocumentación de Funciones
Es buena práctica documentar tus funciones:
def calcular_imc(peso, altura):
"""
Calcula el Índice de Masa Corporal (IMC)
Args:
peso (float): Peso en kilogramos
altura (float): Altura en metros
Returns:
float: Valor del IMC redondeado a 2 decimales
"""
imc = peso / (altura ** 2)
return round(imc, 2)
# Puedes ver la documentación con:
help(calcular_imc)Ámbito de Variables
variable_global = "Soy global"
def ejemplo_ambito():
variable_local = "Soy local"
print(variable_local) # Accede a variable local
print(variable_global) # Accede a variable global
ejemplo_ambito()
# print(variable_local) # Esto daría error - variable_local no está definida fuera de la funciónFunciones Lambda (Anónimas)
# Función lambda simple
cuadrado = lambda x: x ** 2
print(cuadrado(5)) # Output: 25
# Uso común con map, filter, etc.
numeros = [1, 2, 3, 4, 5]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares) # Output: [2, 4]
cuadrados = list(map(lambda x: x ** 2, numeros))
print(cuadrados) # Output: [1, 4, 9, 16, 25]Buenas Prácticas
Nombres descriptivos: Usa nombres que describan lo que hace la función
Una función, una responsabilidad: Cada función debe hacer una sola cosa
Documenta tus funciones: Usa docstrings para explicar qué hace
Manténlas cortas: Si una función es muy larga, considera dividirla
Usa valores por defecto cuando sea apropiado
Las funciones son fundamentales en Python
Comentarios
Publicar un comentario