Tutorial de Funciones en Python
Tutorial de Funciones en Python
Las funciones son bloques de código reutilizables que realizan una tarea específica. Te permiten organizar tu código, evitar repeticiones y hacerlo más legible.
📋 Tabla de Contenidos
¿Qué es una función?
Una función es un bloque de código que:
Realiza una tarea específica
Puede recibir datos (parámetros)
Puede devolver resultados
Se puede reutilizar múltiples veces
Definir una función
def saludar():
"""Función que imprime un saludo"""
print("¡Hola! Bienvenido/a")
# Llamar a la función
saludar() # Output: ¡Hola! Bienvenido/aParámetros y argumentos
Parámetros simples
def saludar_personalizado(nombre):
"""Función con un parámetro"""
print(f"¡Hola {nombre}!")
saludar_personalizado("Ana") # Output: ¡Hola Ana!Múltiples parámetros
def calcular_suma(a, b):
"""Función con dos parámetros"""
resultado = a + b
print(f"La suma de {a} + {b} = {resultado}")
calcular_suma(5, 3) # Output: La suma de 5 + 3 = 8Valores de retorno
def sumar(a, b):
"""Función que retorna un valor"""
return a + b
resultado = sumar(10, 5)
print(resultado) # Output: 15
# También puedes usar return múltiple
def operaciones_basicas(a, b):
"""Función que retorna múltiples valores"""
suma = a + b
resta = a - b
multiplicacion = a * b
division = a / b
return suma, resta, multiplicacion, division
s, r, m, d = operaciones_basicas(10, 2)
print(f"Suma: {s}, Resta: {r}, Multiplicación: {m}, División: {d}")Tipos de parámetros
Parámetros por defecto
def mostrar_info(nombre, edad=25, ciudad="Madrid"):
"""Función con parámetros por defecto"""
print(f"{nombre} tiene {edad} años y vive en {ciudad}")
mostrar_info("Carlos") # Usa valores por defecto
mostrar_info("Laura", 30, "Barcelona") # Sobrescribe valoresArgumentos con nombre (keyword arguments)
def crear_persona(nombre, apellido, edad):
"""Función que usa argumentos con nombre"""
print(f"Persona: {nombre} {apellido}, {edad} años")
# Diferentes formas de llamar la función
crear_persona("Ana", "García", 25)
crear_persona(nombre="Ana", apellido="García", edad=25)
crear_persona(edad=25, nombre="Ana", apellido="García")Número variable de argumentos
def sumar_numeros(*args):
"""Función que acepta cualquier número de argumentos"""
total = 0
for numero in args:
total += numero
return total
print(sumar_numeros(1, 2, 3)) # Output: 6
print(sumar_numeros(1, 2, 3, 4, 5)) # Output: 15
def mostrar_info(**kwargs):
"""Función que acepta argumentos con nombre variables"""
for clave, valor in kwargs.items():
print(f"{clave}: {valor}")
mostrar_info(nombre="Juan", edad=30, ciudad="París")Funciones lambda
Son funciones anónimas de una sola línea:
# Función normal
def cuadrado(x):
return x ** 2
# Equivalente con lambda
cuadrado_lambda = lambda x: x ** 2
print(cuadrado(5)) # Output: 25
print(cuadrado_lambda(5)) # Output: 25
# Uso común con map, filter, sorted
numeros = [1, 2, 3, 4, 5]
# Elevar al cuadrado
cuadrados = list(map(lambda x: x**2, numeros))
print(cuadrados) # Output: [1, 4, 9, 16, 25]
# Filtrar números pares
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares) # Output: [2, 4]
# Ordenar por criterio personalizado
personas = [("Ana", 25), ("Juan", 30), ("Maria", 20)]
ordenado_edad = sorted(personas, key=lambda x: x[1])
print(ordenado_edad) # Output: [('Maria', 20), ('Ana', 25), ('Juan', 30)]Á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
# Para modificar una variable global
global variable_global
variable_global = "Modificada"
ejemplo_ambito()
print(variable_global) # Output: ModificadaEjercicios prácticos
Ejercicio 1: Calculadora básica
def calculadora(a, b, operacion):
"""
Realiza operaciones básicas entre dos números
operacion: 'suma', 'resta', 'multiplicacion', 'division'
"""
if operacion == 'suma':
return a + b
elif operacion == 'resta':
return a - b
elif operacion == 'multiplicacion':
return a * b
elif operacion == 'division':
if b != 0:
return a / b
else:
return "Error: División por cero"
else:
return "Operación no válida"
# Pruebas
print(calculadora(10, 5, 'suma')) # Output: 15
print(calculadora(10, 5, 'division')) # Output: 2.0Ejercicio 2: Validar email
def validar_email(email):
"""Valida si un email tiene formato correcto"""
if '@' in email and '.' in email:
return True
return False
# Pruebas
print(validar_email("usuario@example.com")) # Output: True
print(validar_email("usuarioexample.com")) # Output: FalseEjercicio 3: Generador de contraseñas
import random
import string
def generar_contraseña(longitud=8):
"""Genera una contraseña aleatoria"""
caracteres = string.ascii_letters + string.digits + string.punctuation
contraseña = ''.join(random.choice(caracteres) for _ in range(longitud))
return contraseña
# Pruebas
print(generar_contraseña()) # Ejemplo: aB3#fG7*
print(generar_contraseña(12)) # Contraseña de 12 caracteresEjercicio 4: Contador de palabras
def contar_palabras(texto):
"""Cuenta las palabras en un texto"""
palabras = texto.split()
return len(palabras)
def estadisticas_texto(texto):
"""Devuelve estadísticas del texto"""
palabras = texto.split()
numero_palabras = len(palabras)
numero_caracteres = len(texto)
longitud_promedio = sum(len(palabra) for palabra in palabras) / numero_palabras
return {
'palabras': numero_palabras,
'caracteres': numero_caracteres,
'longitud_promedio': round(longitud_promedio, 2)
}
# Prueba
texto = "Python es un lenguaje de programación versátil"
print(estadisticas_texto(texto))🎯 Consejos finales
Nombres descriptivos: Usa nombres que describan lo que hace la función
Una función, una tarea: Cada función debe hacer una sola cosa bien
Documentación: Usa docstrings para explicar el propósito de la función
Parámetros razonables: No uses demasiados parámetros (máximo 3-4 recomendado)
Manejo de errores: Considera usar try-except para manejar posibles errores
Comentarios
Publicar un comentario