1. ¿Qué es def
en Python?
La palabra clave def
en Python se utiliza para definir funciones. Las funciones son una estructura fundamental que mejora la reutilización del código y permite organizar los programas de manera más clara. Con def
puedes crear bloques de código que realicen tareas específicas y reutilizarlos tantas veces como sea necesario. Esto incrementa la legibilidad del código y reduce la probabilidad de errores.
Sintaxis básica de la palabra clave def
La sintaxis básica es la siguiente:
def nombre_funcion(param1, param2, ...):
# instrucciones
return valor
Después de def
se escribe el nombre de la función, seguido de los parámetros entre paréntesis. Luego, tras los dos puntos, se coloca un bloque indentado con el cuerpo de la función. De forma opcional, se puede usar return
para devolver un valor.
2. Sintaxis básica y uso de def
Cómo definir una función
Cuando defines una función con def
, debes indicar el nombre de la función, la lista de parámetros y el bloque de instrucciones. Por ejemplo, este código muestra una función simple que imprime «Hello, World!»:
def say_hello():
print("Hello, World!")
Esta función se ejecuta llamando a say_hello()
, lo que muestra en consola el mensaje «Hello, World!».
La importancia de la indentación
En Python, la indentación es fundamental. Todo el código dentro de una función debe tener el mismo nivel de indentación. La indentación define la jerarquía de bloques, y un error en este aspecto provocará fallos de ejecución.
Llamar a una función
Para ejecutar una función definida, simplemente escribe su nombre seguido de paréntesis. Si tiene argumentos, deben incluirse dentro de los paréntesis.
say_hello()

3. Argumentos y valores por defecto
Argumentos posicionales y por palabra clave
Las funciones pueden recibir argumentos, que se dividen en posicionales y por palabra clave. Los argumentos posicionales se pasan en el orden en que fueron definidos. Los argumentos por palabra clave se indican con su nombre, permitiendo mayor flexibilidad en el orden de la llamada.
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
En este ejemplo, greeting
tiene un valor por defecto. Así, al llamar greet("Alice")
, se imprimirá «Hello, Alice!».
Argumentos de longitud variable
En ocasiones, es necesario que una función acepte un número indeterminado de argumentos. En Python esto se logra con *args
y **kwargs
.
def print_args(*args):
for arg in args:
print(arg)
print_args(1, 2, 3)
En este caso, *args
recoge todos los argumentos posicionales en una tupla.
4. Devolver valores con return
Uso de la instrucción return
Si deseas que una función devuelva un resultado, utiliza la instrucción return
. Si no se especifica, la función devuelve None
por defecto.
def add(a, b):
return a + b
resultado = add(3, 4)
print(resultado) # 7
La función add
devuelve la suma de dos números, y este valor puede almacenarse en una variable.
Devolver múltiples valores
En Python, una función también puede devolver varios valores separados por comas, que se agrupan automáticamente en una tupla.
def swap(a, b):
return b, a
x, y = swap(1, 2)
print(x, y) # 2 1

5. Alcance y ciclo de vida de las variables
Variables locales y globales
Las variables definidas dentro de una función se llaman locales y solo existen dentro de ella. Las variables definidas fuera de cualquier función son globales y están disponibles en todo el programa.
x = "global"
def func():
x = "local"
print(x)
func() # local
print(x) # global
En este ejemplo, x
dentro de func
no afecta a la variable global.
La palabra clave global
Si necesitas modificar una variable global desde dentro de una función, debes declararla con global
.
x = "global"
def change_global():
global x
x = "changed"
change_global()
print(x) # changed
6. Ejemplos prácticos y aplicaciones
Optimización con funciones
Las funciones permiten optimizar programas evitando duplicación de código. Por ejemplo, si necesitas calcular varias veces el área de un círculo:
def calculate_area(radius):
return 3.14 * radius * radius
area1 = calculate_area(5)
area2 = calculate_area(10)
Ejemplo de formato de texto
También puedes crear funciones para dar formato a cadenas:
def format_text(text, alignment="left"):
if alignment == "left":
return text.ljust(20)
elif alignment == "right":
return text.rjust(20)
elif alignment == "center":
return text.center(20)
print(format_text("Hello", "center"))
Esta función permite alinear texto a la izquierda, derecha o centro.

7. Conceptos avanzados de funciones
Funciones anidadas
En Python es posible definir una función dentro de otra, conocidas como funciones anidadas. Estas solo pueden ser llamadas desde la función externa.
def outer():
def inner():
print("Esta es la función interna")
inner()
Funciones anónimas (Lambda)
Con la palabra clave lambda
puedes crear funciones anónimas, útiles para operaciones simples que se usan una sola vez.
square = lambda x: x * x
print(square(5)) # 25
Decoradores
Los decoradores permiten extender el comportamiento de una función sin modificar su código original. Se definen como funciones que reciben otra función y devuelven una nueva.
def decorator(func):
def wrapper():
print("Antes de la función")
func()
print("Después de la función")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()
8. Conclusión
En este artículo hemos explicado cómo definir funciones en Python usando def
, el uso de argumentos, valores de retorno, alcance de variables y conceptos avanzados como lambdas y decoradores. Dominar las funciones te permitirá escribir programas más claros, eficientes y fáciles de mantener. Te animamos a practicar creando tus propias funciones para mejorar tu nivel de programación en Python.

9. Preguntas frecuentes (FAQs)
¿Cuál es la diferencia entre return
y print
?
Aunque parecen similares, cumplen funciones distintas. return
devuelve un valor desde la función para usarlo en otra parte del programa, mientras que print
solo muestra el resultado en la consola.
def add(a, b):
return a + b
resultado = add(3, 4) # resultado = 7
print(resultado) # 7
def display_message():
print("Hello, World!")
display_message() # imprime en consola, pero no devuelve valor
¿Qué ventajas tienen las funciones anidadas?
Permiten crear funciones locales que no son accesibles desde fuera, favoreciendo la encapsulación y el orden del código. Además, pueden acceder a variables de la función externa.
¿Cuándo usar argumentos variables?
Se utilizan cuando el número de argumentos no es fijo. Por ejemplo, para sumar una cantidad indefinida de números:
def add_all(*args):
return sum(args)
resultado = add_all(1, 2, 3, 4, 5) # 15
¿Cómo funciona la recursividad?
Una función recursiva es aquella que se llama a sí misma. Es útil para problemas como el cálculo de factoriales, aunque debe usarse con cuidado para evitar desbordamiento de pila.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
resultado = factorial(5) # 120