Curso Python #4: Funciones — Organiza y Reutiliza tu Codigo
Introduccion: que son las funciones y por que usarlas
Bienvenido a la Parte 4 de 10 del curso de Python para principiantes. En el articulo anterior aprendiste a usar condicionales y bucles para controlar el flujo de tu programa. Ahora vamos a aprender algo que cambiara tu forma de programar para siempre: las funciones.

Imagina que tienes una receta de cocina favorita. Cada vez que quieres preparar ese platillo, no reinventas la receta desde cero — simplemente la sigues paso a paso. Una funcion en Python es exactamente eso: un conjunto de instrucciones con un nombre que puedes reutilizar cuantas veces quieras sin tener que escribir el mismo codigo una y otra vez.
Las funciones te ayudan a:
- No repetir codigo: escribes la logica una vez y la usas muchas veces
- Organizar tu programa: divides un problema grande en partes pequenas y manejables
- Facilitar el mantenimiento: si necesitas cambiar algo, lo cambias en un solo lugar
- Hacer tu codigo mas legible: un nombre de funcion descriptivo dice que hace sin leer los detalles
Definir una funcion con def
Para crear una funcion en Python usas la palabra clave def, seguida del nombre de la funcion, parentesis y dos puntos:
1# Definir la funcion
2def saludar():
3 print("¡Hola! Bienvenido al programa")
4 print("Espero que tengas un excelente dia")
5
6# Llamar (usar) la funcion
7saludar()
8saludar() # Puedes llamarla cuantas veces quieras
Salida:
1¡Hola! Bienvenido al programa
2Espero que tengas un excelente dia
3¡Hola! Bienvenido al programa
4Espero que tengas un excelente dia
saludar().
Reglas para nombrar funciones:
- Usa nombres descriptivos:
calcular_promedioes mejor quecp - Usa minusculas y guiones bajos:
mi_funcion(noMiFuncion) - El nombre debe indicar que hace la funcion:
enviar_correo,calcular_area,validar_edad
Parametros y argumentos
Las funciones se vuelven realmente utiles cuando les puedes enviar informacion. Esa informacion se llama parametros (cuando defines la funcion) y argumentos (cuando la llamas).
1# "nombre" es un parametro
2def saludar_persona(nombre):
3 print(f"¡Hola, {nombre}! ¿Como estas?")
4
5# "Ana" y "Carlos" son argumentos
6saludar_persona("Ana")
7saludar_persona("Carlos")
Salida:
1¡Hola, Ana! ¿Como estas?
2¡Hola, Carlos! ¿Como estas?
Puedes tener multiples parametros separados por comas:
1def presentar(nombre, edad, ciudad):
2 print(f"Me llamo {nombre}, tengo {edad} anos y vivo en {ciudad}")
3
4presentar("Laura", 25, "Guadalajara")
5presentar("Miguel", 30, "Monterrey")
Retornar valores con return
Hasta ahora nuestras funciones solo imprimen texto. Pero muchas veces necesitas que una funcion calcule algo y te devuelva el resultado. Para eso usas return:
1def sumar(a, b):
2 resultado = a + b
3 return resultado
4
5# Guardar el resultado en una variable
6total = sumar(5, 3)
7print(f"La suma es: {total}") # La suma es: 8
8
9# Tambien puedes usarlo directamente
10print(sumar(10, 20)) # 30
La diferencia entre print y return es muy importante:
| print() | return |
|---|---|
| Muestra un texto en la pantalla | Devuelve un valor a quien llamo la funcion |
| No puedes guardar lo que imprime en una variable | Puedes guardar el resultado en una variable |
| La funcion sigue ejecutandose despues del print | La funcion termina inmediatamente despues del return |
1def es_mayor_de_edad(edad):
2 if edad >= 18:
3 return True
4 else:
5 return False
6
7# Usar el resultado en un condicional
8if es_mayor_de_edad(20):
9 print("Puede entrar")
10else:
11 print("No puede entrar")
return, la funcion termina inmediatamente. Cualquier codigo despues del return no se ejecutara.
Valores por defecto en parametros
Puedes darle a un parametro un valor por defecto. Si al llamar la funcion no le pasas ese argumento, usara el valor por defecto:
1def saludar(nombre, saludo="Hola"):
2 print(f"{saludo}, {nombre}!")
3
4saludar("Ana") # Hola, Ana!
5saludar("Carlos", "Buenos dias") # Buenos dias, Carlos!
Esto es muy util para funciones que tienen opciones "opcionales":
1def crear_perfil(nombre, edad, pais="Mexico"):
2 print(f"Nombre: {nombre}")
3 print(f"Edad: {edad}")
4 print(f"Pais: {pais}")
5 print()
6
7crear_perfil("Laura", 25) # Usa "Mexico" por defecto
8crear_perfil("John", 30, "Estados Unidos") # Usa el pais que le pasamos
def funcion(pais="Mexico", nombre). Lo correcto es: def funcion(nombre, pais="Mexico").
Argumentos con nombre (keyword arguments)
Cuando llamas una funcion, normalmente pasas los argumentos en orden. Pero tambien puedes usar el nombre del parametro para ser mas claro:
1def crear_cuenta(usuario, correo, plan="basico"):
2 print(f"Usuario: {usuario}")
3 print(f"Correo: {correo}")
4 print(f"Plan: {plan}")
5
6# Por posicion (el orden importa)
7crear_cuenta("ana123", "[email protected]", "premium")
8
9# Por nombre (el orden no importa)
10crear_cuenta(correo="[email protected]", usuario="carlos456", plan="pro")
Los argumentos con nombre hacen tu codigo mas legible, especialmente cuando una funcion tiene muchos parametros. Queda claro que significa cada valor.
Alcance de variables (scope): local vs global
El alcance (scope) de una variable determina donde puedes usarla. Hay dos tipos principales:
Variables locales
Una variable creada dentro de una funcion solo existe dentro de esa funcion. Cuando la funcion termina, la variable desaparece:
1def mi_funcion():
2 mensaje = "Hola desde la funcion" # Variable LOCAL
3 print(mensaje)
4
5mi_funcion()
6# print(mensaje) # ERROR: "mensaje" no existe fuera de la funcion
Variables globales
Una variable creada fuera de cualquier funcion es global y se puede leer desde cualquier lugar:
1nombre_app = "Mi Programa" # Variable GLOBAL
2
3def mostrar_bienvenida():
4 print(f"Bienvenido a {nombre_app}") # Puede LEER la variable global
5
6mostrar_bienvenida()
return. Modificar variables globales hace que tu codigo sea dificil de entender y mantener.
Ejemplo que muestra la diferencia:
1x = 10 # Variable global
2
3def cambiar_x():
4 x = 20 # Esto crea una variable LOCAL llamada "x"
5 print(f"Dentro de la funcion: x = {x}")
6
7cambiar_x()
8print(f"Fuera de la funcion: x = {x}") # Sigue siendo 10
Salida:
1Dentro de la funcion: x = 20
2Fuera de la funcion: x = 10
Funciones lambda
Una funcion lambda es una funcion pequena y anonima que se escribe en una sola linea. Es util para operaciones simples que no necesitan un nombre:
1# Funcion normal
2def doble(x):
3 return x * 2
4
5# Misma funcion como lambda
6doble_lambda = lambda x: x * 2
7
8print(doble(5)) # 10
9print(doble_lambda(5)) # 10
Las lambdas son especialmente utiles cuando necesitas pasar una funcion pequena como argumento a otra funcion:
1# Ordenar una lista de tuplas por el segundo elemento
2estudiantes = [("Ana", 85), ("Carlos", 92), ("Maria", 78)]
3estudiantes_ordenados = sorted(estudiantes, key=lambda x: x[1])
4print(estudiantes_ordenados)
5# [('Maria', 78), ('Ana', 85), ('Carlos', 92)]
6
7# Filtrar numeros pares de una lista
8numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
9pares = list(filter(lambda x: x % 2 == 0, numeros))
10print(pares) # [2, 4, 6, 8, 10]
def porque sera mas facil de leer y mantener.
Funciones utiles integradas en Python
Python viene con muchas funciones ya creadas que puedes usar sin importar nada. Aqui las mas utiles para principiantes:
1# len() - Longitud de una secuencia
2print(len("Python")) # 6
3print(len([1, 2, 3, 4, 5])) # 5
4
5# max() y min() - Valor maximo y minimo
6print(max(10, 25, 3, 47)) # 47
7print(min(10, 25, 3, 47)) # 3
8print(max([85, 92, 78, 95])) # 95
9
10# sum() - Suma de una secuencia
11notas = [85, 92, 78, 95, 88]
12print(sum(notas)) # 438
13
14# sorted() - Ordenar una secuencia
15numeros = [5, 2, 8, 1, 9, 3]
16print(sorted(numeros)) # [1, 2, 3, 5, 8, 9]
17print(sorted(numeros, reverse=True)) # [9, 8, 5, 3, 2, 1]
18
19# abs() - Valor absoluto
20print(abs(-15)) # 15
21print(abs(7)) # 7
22
23# round() - Redondear
24print(round(3.14159, 2)) # 3.14
25print(round(7.5)) # 8
Ejemplo combinando varias funciones para calcular estadisticas:
1notas = [85, 92, 78, 95, 88, 70, 100]
2
3print(f"Total de notas: {len(notas)}")
4print(f"Nota mas alta: {max(notas)}")
5print(f"Nota mas baja: {min(notas)}")
6print(f"Suma total: {sum(notas)}")
7print(f"Promedio: {round(sum(notas) / len(notas), 2)}")
8print(f"Notas ordenadas: {sorted(notas)}")
Ejemplo practico: calculadora completa
Vamos a crear una calculadora que use funciones para cada operacion. Este ejemplo combina todo lo que aprendiste en este articulo:
1def sumar(a, b):
2 return a + b
3
4def restar(a, b):
5 return a - b
6
7def multiplicar(a, b):
8 return a * b
9
10def dividir(a, b):
11 if b == 0:
12 return "Error: no se puede dividir entre cero"
13 return a / b
14
15def mostrar_menu():
16 print("
17=== Calculadora Python ===")
18 print("1. Sumar")
19 print("2. Restar")
20 print("3. Multiplicar")
21 print("4. Dividir")
22 print("5. Salir")
23
24def obtener_numeros():
25 num1 = float(input("Primer numero: "))
26 num2 = float(input("Segundo numero: "))
27 return num1, num2
28
29# Programa principal
30while True:
31 mostrar_menu()
32 opcion = input("
33Elige una opcion (1-5): ")
34
35 if opcion == "5":
36 print("¡Hasta luego!")
37 break
38
39 if opcion not in ["1", "2", "3", "4"]:
40 print("Opcion no valida. Intenta de nuevo.")
41 continue
42
43 num1, num2 = obtener_numeros()
44
45 if opcion == "1":
46 resultado = sumar(num1, num2)
47 print(f"{num1} + {num2} = {resultado}")
48 elif opcion == "2":
49 resultado = restar(num1, num2)
50 print(f"{num1} - {num2} = {resultado}")
51 elif opcion == "3":
52 resultado = multiplicar(num1, num2)
53 print(f"{num1} * {num2} = {resultado}")
54 elif opcion == "4":
55 resultado = dividir(num1, num2)
56 print(f"{num1} / {num2} = {resultado}")
- Define una funcion para cada operacion matematica (
sumar,restar,multiplicar,dividir) - Usa
mostrar_menu()para mantener la interfaz organizada - Usa
obtener_numeros()para evitar repetir la lectura de numeros - La funcion
dividirmaneja el caso especial de division entre cero - Usa un bucle
while Trueconbreakpara que el usuario pueda hacer varias operaciones
Resumen y proximo articulo
En este articulo aprendiste a organizar tu codigo con funciones:
- def: define una funcion con un nombre reutilizable
- Parametros y argumentos: permiten enviar informacion a la funcion
- return: devuelve un resultado al codigo que llamo la funcion
- Valores por defecto: parametros opcionales con un valor predefinido
- Keyword arguments: argumentos con nombre para mayor claridad
- Scope: las variables locales viven dentro de la funcion, las globales fuera
- Lambda: funciones anonimas de una linea para operaciones simples
- Funciones integradas:
len(),max(),min(),sum(),sorted(),abs()
Las funciones son una de las herramientas mas importantes de cualquier lenguaje de programacion. A partir de ahora, cada vez que veas codigo repetido, piensa: "esto deberia ser una funcion". En el proximo articulo (Parte 5 de 10) aprenderemos sobre listas, tuplas y diccionarios: las estructuras de datos que te permitiran almacenar y organizar colecciones de informacion.
Comments
Sign in to leave a comment
No comments yet. Be the first!