Las funciones en Python son bloques de código reutilizables que solo se ejecutan cuando los llamas, y dominarlas te ahorra cientos de líneas y desordena menos tu programa. Si estás aprendiendo programación, entender cómo definirlas con def, pasarles argumentos y retornar valores es la base para escribir código modular y limpio.
¿Cómo se define una función en Python?
La sintaxis es simple: usas la palabra reservada def, seguida del nombre de la función, paréntesis y dos puntos. Todo lo que escribas indentado debajo será el cuerpo de la función, es decir, las instrucciones que se ejecutarán solo cuando la llames.
python
def mi_funcion():
print("Hola mundo desde una función")
Si corres el programa así, no pasa nada. Y aquí viene lo interesante: a diferencia del código secuencial que veníamos escribiendo línea por línea, una función necesita que la invoques explícitamente. Para hacerlo, escribes su nombre seguido de paréntesis de apertura y cierre.
python
mi_funcion()
Esos paréntesis son la señal visual que le dice a Python: ejecuta este bloque ahora. Y si llamas la función varias veces, el mensaje se imprime tantas veces como la invoques. Esa es la magia de la reutilización.
¿Qué es una función en Python? Es un bloque de código nombrado que se ejecuta solo cuando lo llamas con paréntesis. Sirve para reutilizar lógica sin reescribirla.
¿Cómo paso información a una función con argumentos y parámetros?
Una función gana potencia cuando puedes personalizar su comportamiento. Para eso existen los argumentos: variables que la función espera recibir entre los paréntesis al momento de definirla.
python
def saludar(nombre):
print("Hola " + nombre)
saludar("Pedro")
saludar("María")
Fíjate en un detalle del editor: cuando declaras una variable y no la usas dentro del cuerpo, suele aparecer en color apagado. Cuando sí la usas, cambia a un tono más vivo. Es una pista visual de que tu argumento está cumpliendo su propósito.
¿Cuál es la diferencia entre argumento y parámetro?
Aunque en la práctica muchas personas los usan como sinónimos, hay una distinción sutil:
- Argumento: la variable que la función espera recibir (lo que escribes en la definición).
- Parámetro: el valor real que le pasas cuando llamas a la función.
¿Argumento o parámetro? Argumento es lo que la función espera; parámetro es lo que tú le pasas al ejecutarla. En el día a día verás los términos intercambiados.
¿Importa el orden de los argumentos?
Sí, y mucho. Cuando una función espera varios argumentos, el orden en que los envías define cómo se asignan dentro del bloque.
python
def saludar(nombre, apellido):
print("Hola " + nombre + " " + apellido)
saludar("Pedro", "Sánchez")
saludar("María", "Gutiérrez")
El resultado será “Hola Pedro Sánchez” y “Hola María Gutiérrez”. Si inviertes el orden, los nombres y apellidos quedarán cruzados. Y si omites uno de los dos argumentos esperados, Python lanzará un error: enviar todos los argumentos requeridos es obligatorio.
¿Cómo asigno valores por defecto y retorno resultados?
Para evitar errores cuando no quieres pasar todos los parámetros, puedes definir valores por defecto directamente en la firma de la función usando el signo igual.
python
def saludar(nombre, apellido="", nacionalidad="Colombia"):
print("Hola " + nombre + " " + apellido + " de " + nacionalidad)
saludar("Pedro", "Sánchez", "España")
saludar("María")
saludar("Ana")
En este ejemplo, si no envías nacionalidad, la función asume “Colombia”. Así, “Pedro” saldrá como de España, mientras que “María” y “Ana” tomarán el valor por defecto. Esta técnica te permite manejar casos donde algunos datos son opcionales sin romper la ejecución.
¿Cómo funciona la sentencia return?
Las funciones también pueden devolver información para que la uses en otra parte del programa. Para eso existe return.
python
def sumar(A, B):
return A + B
resultado = sumar(2, 3)
print(resultado)
Si llamas sumar(2, 3) sin asignar el resultado a nada, la suma ocurre pero se pierde. Por eso necesitas guardarla en una variable como resultado y luego imprimirla. La terminal mostrará 5.
¿Qué hace return en una función? Devuelve un valor al lugar donde se llamó la función, para que puedas asignarlo a una variable o usarlo en otra operación.
¿Qué hago si todavía no sé qué hará mi función?
A veces el negocio o la lógica aún no están definidos y necesitas dejar la función esbozada sin contenido. Si la dejas vacía, Python lanzará un error de indentación.
La solución es usar la sentencia pass, igual que en otras estructuras como los condicionales o los bucles. Le indica a Python: aquí no hay nada que ejecutar todavía, pero no falles.
python
def funcion():
pass
Este pequeño truco te permite construir el esqueleto de tu programa antes de escribir toda la lógica, manteniendo el código ejecutable mientras avanzas.
Ahora te dejo un reto: en el ejemplo vimos cómo sumar con una función. ¿Cómo escribirías funciones para restar, multiplicar y dividir dos números? Déjalo en los comentarios y comparte tu solución.