Aprende funciones en Python
¿Vas a clase y sales más confundido que cuando entraste? ¿ Te hablan de funciones en Python y tú solo piensas en la última vez que cocinaste? No te preocupes. Aquí no venimos a juzgar, venimos a entender —y de paso, a reírnos un poco mientras aprendemos.
Vamos al grano: una función en Python no es magia negra ni necesitas un doctorado para usarla. Es solo un bloque de código que puedes reutilizar todas las veces que quieras. ¿Y por qué querrías hacer eso? Pues porque repetir código es como copiar tarea: aburrido, arriesgado y poco eficiente.
¿Qué es una función en Python y para qué sirve?

Una función recibe datos, hace algo con ellos y te devuelve un resultado.
Imagina que tienes que imprimir un saludo 10 veces a lo largo de tu código. En lugar de escribir la misma instrucción una y otra vez, creas una función y la usas cada vez que quieras saludar.
¿Te suena útil? Lo es. Y mucho.
Si estás dando tus primeros pasos en programación, uno de los requisitos iniciales es instalar Python en Windows. No te preocupes, el proceso es más sencillo de lo que parece.
La sintaxis: el ritual de invocación
Para definir una función, simplemente escribe def
, seguido del nombre que le quieras dar, luego van los paréntesis donde opcionalmente puedes pasar datos, y al final dos puntos. Todo el código que quieras ejecutar dentro de la función debe estar indentado.
Ejemplo visual :
def mi_funcion():
print("Hola")
¿Ves ese espacio antes del print? Esa es la indentación, y es muy importante en Python.
¿Qué es eso de indentación?
Te lo explico fácil: otros lenguajes usan llaves para definir bloques de código. Python usa espacios o tabulaciones.
Si no indentas bien, tu código no funciona. Así de simple. Es como escribir una receta de cocina sin pasos claros: nadie va a saber cuándo mezclar y cuándo hornear.
¿Espacios o tabs? Hay guerras por esto. Pero lo importante es que uses el mismo tipo en todo tu archivo. La guía oficial de Python (PEP8) recomienda 4 espacios por nivel. Y sí, puedes usar la tecla TAB
, que muchos editores traducen automáticamente en esos 4 espacios.
Primera función: pass
de lo más elegante
Hagamos una función que no haga nada, como ese amigo que nunca responde los mensajes.
def nada():
pass
La palabra clave pass
le dice a Python: “no hagas nada, pero no me tires error”.
Llamar a la función:
nada()
No pasa nada. Perfecto.
Hagamos que funcione de verdad
Probemos algo más útil:
def saludar():
print("Hola")
Y luego:
saludar()
¡Boom! Aparece el “Hola”. Sencillo, directo y sin vueltas.
Ahora con argumentos: datos que le das a la función
¿Y si queremos que te salude por tu nombre?
def saludar(nombre):
print("Hola " + nombre)
Llamada correcta:
saludar("Juan")
Llamada incorrecta:
saludar()
¿Resultado? Python se enfada contigo. Te dice que falta un argumento, y tiene razón.
Guardando resultados con return
El print()
muestra cosas en la consola. El return
devuelve datos para que puedas usarlos después.
Veamos un ejemplo práctico:
def media(n1, n2, n3):
resultado = (n1 + n2 + n3) / 3
return resultado
Y luego:
nota = media(8, 9, 10)
print(nota)
¿Resultado? 9.0. Así de fácil.
También podrías hacer esto en una sola línea:
def media(a, b, c): return (a + b + c) / 3
print()
vs return
: ¿cuál es la diferencia?
print()
= muestra un dato en pantalla, pero no lo guarda.return
= devuelve un dato que puedes guardar y usar más tarde.
Si llamas una función que solo tiene print()
y tratas de guardar el resultado en una variable, obtendrás None
. Es decir: nada.
El poder de interrumpir: el efecto return
Mira este ejemplo:
def ejemplo():
print("Primero")
return
print("Segundo")
Solo verás “Primero”. El return
detiene la función, así que nada después de él se ejecuta.
Keyword arguments: cuando el orden no importa
¿Y si cambias el orden de los argumentos?
def resta(a, b):
return a - b
Ejemplos:
print(resta(5, 3)) → 2
print(resta(3, 5)) → -2
print(resta(b=3, a=5)) → 2
Los keyword arguments (argumentos con nombre) te permiten asignar valores sin importar el orden. Son ideales para mejorar la legibilidad y evitar errores.
Argumentos con valores por defecto
¿Qué pasa si no pasas ningún dato?
def resta(a=3, b=2):
return a - b
Puedes llamarla así:
print(resta()) → 1
print(resta(10)) → 8
print(resta(b=5, a=20)) → 15
Regla de oro:
- No puedes pasar keyword arguments antes de argumentos posicionales.
- No puedes asignar dos veces el mismo argumento.
Scope o el misterio del alcance
Scope (alcance) define dónde puedes usar una variable.
def prueba():
x = 3
print(x)
prueba()
print(x) → Error
Las variables dentro de una función no existen fuera. Son locales.
¿Y si existe una variable global con el mismo nombre?
x = 0
def cambia():
x = 3
print(x)
cambia()
print(x) → sigue siendo 0
Pero puedes forzar el uso de la global con global
:
x = 0
def cambia():
global x
x = 3
cambia()
print(x) → ahora imprime 3
Repaso antes del café
Ya sabes:
- Qué es una función
- Cómo usar
def
,print()
yreturn
- Qué es
None
y por qué aparece - Cómo se usan los argumentos
- Qué son los keyword arguments
- Qué es el scope y cómo afecta a tus variables
Y como extra, ya estás participando en el eterno debate de espacios vs tabulaciones. (Yo prefiero tabs, pero no lo digas muy fuerte).
¿Y ahora qué?
Te toca a ti. Abre tu editor, escribe tu primera función en python, rómpela, arréglala, vuelve a probarla. Porque la mejor forma de aprender Python… es jugando con él.
¿Listo para el próximo nivel?
Enlaces relacionados que te pueden interesar: