Hasta ahora tu código se ejecutaba directamente de arriba abajo. Cuando los programas crecen, conviene agrupar pasos que forman una misma tarea.
Una función te permite decir: «a este bloque de instrucciones lo llamaré así». Después puedes ejecutar ese trabajo usando su nombre.
Construir una función pequeña distinguiendo definición, cuerpo y llamada.
def describe el trabajo; los paréntesis lo ponen en marcha
def mostrar_bienvenida():
print("Bienvenido")
print("Elige una opción")
mostrar_bienvenida()Las líneas indentadas pertenecen a la función. Al llegar a def, Python registra esa definición, pero no imprime todavía los mensajes.
La ejecución ocurre cuando encuentra mostrar_bienvenida(). Esa línea es la llamada.
El nombre debería contar qué tarea realiza
Un nombre como hacer() apenas informa. mostrar_menu(), guardar_partida() o pedir_nombre() permiten leer el programa casi como una lista de acciones.
Buen punto de partida: intenta comenzar los nombres de funciones con un verbo. No es una ley de Python, pero suele ayudarte a pensar en la función como una acción concreta.
La primera ventaja aparece cuando la misma tarea se repite
def separar():
print("----------")
print("Inicio")
separar()
print("Resultados")
separar()Si mañana quieres cambiar el separador, modificas una sola línea dentro de la función. Las dos llamadas usarán la nueva versión.
Pero no conviertas cada línea en una función: agrupa pasos que juntos formen una tarea reconocible.
Construye una tarea con nombre
Antes de escribir una función desde cero, ordena mentalmente estas tres piezas:
def mostrar_menu(): ← definición print("1. Jugar") ← cuerpo indentadomostrar_menu() ← llamadaPython registra la definición cuando la encuentra; el cuerpo se ejecuta cuando llega una llamada.
Completa la función para que el menú tenga dos líneas y llama a la función una sola vez.
1. Jugar 2. Salir
La salida aparecerá aquí.
Necesito una pista
- La segunda línea debe estar indentada para pertenecer al cuerpo.
- No añadas otro print fuera de la función: queremos que la tarea quede encapsulada.
Ver una solución razonada
def mostrar_menu():
print("1. Jugar")
print("2. Salir")
mostrar_menu()Describe en papel una función despedir() que muestre “Hasta pronto”. ¿Qué tres piezas tendría? Definición, cuerpo y llamada. No necesitas ejecutarla para comprobar que sabes estructurarla.
Cuando defines algo y «no pasa nada»
Es muy común escribir una función correcta, ejecutar el archivo y ver una salida vacía. Revisa si existe una llamada como mi_funcion(). Definir no es ejecutar.
La otra fuente habitual de problemas es la indentación: todas las instrucciones que forman el cuerpo deben quedar desplazadas respecto a def.
Lee un programa por tareas, no solo por líneas
Cuando empieces a usar funciones, intenta resumir el archivo a un nivel más alto: «define cómo mostrar el menú, después muestra el menú». Esta forma de pensar te permitirá manejar programas cada vez mayores sin tener que mantener todas las líneas en la cabeza.
Si distingues con claridad el momento en que una función se define del momento en que se llama, ya puedes aprender a enviarle datos y recibir resultados.