Saltar al contenido principal
eLearner.app
Módulo 5 · Lección 1 de 417/36 en el curso~12 min
Lecciones del módulo (1/4)

def y return

Una función es un bloque de código reutilizable: la defines una vez con def, luego la llamas tantas veces como desees. Las funciones hacen que el código sea modular, comprobable y autodocumentado.

Sintaxis básica

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def introduce la función, seguida del nombre y los parámetros entre paréntesis.
  • El : abre el bloque indentado.
  • return devuelve un valor al llamador y finaliza la función.

return explícito frente a None implícito

Si no escribes return, la función devuelve None implícitamente:

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

Un return simple (sin valor) también devuelve None, pero puede servir como salida anticipada:

Python
def primo_pari(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None   # explicit: communicates "not found"

¿Múltiples valores? Devuelve una tupla

Python no tiene "parámetros de salida": para devolver más de una cosa, devuelve una tupla (a menudo desempaquetada por el llamador).

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Docstring: documentación integrada

La primera cadena dentro de la función es el docstring: aparece en help(fn) y como información sobre herramientas (tooltip) en los IDE.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

Ámbito: variables locales

Las variables definidas dentro de una función son locales: no existen fuera.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

Las funciones siempre devuelven algo

En Python, si una función no declara explícitamente una instrucción return o presenta un return vacío, devolverá implícitamente el valor especial None. No hay funciones que no devuelvan un valor.

Pruébalo tú

Ejercicio#python.m5.l1.e1
Intentos: 0Cargando...

Define una función `double(x)` que devuelva `x * 2`. Luego llámala con 7 y asigna el resultado a `result`. Evalúa `result`.

Cargando editor...
Mostrar pista

Usa return x * 2.

Solución disponible después de 3 intentos

Ejercicio de repaso

Ejercicio#python.m5.l1.e2
Intentos: 0Cargando...

Define `min_max(nums)` que devuelva una tupla `(minimum, maximum)`. Llámala sobre `[3, 1, 4, 1, 5, 9, 2, 6]` y desempaqueta el resultado en `mn, mx`. Evalúa `(mn, mx)`.

Cargando editor...
Mostrar pista

return min(nums), max(nums)

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m5.l1.e3
Intentos: 0Cargando...

Define una función `is_palindrome(text)` que devuelva `True` si la cadena de entrada es igual a su versión invertida, y `False` en caso contrario. Prueba la función con `is_palindrome("radar")` como última expresión.

Cargando editor...
Mostrar pista

Usa el corte text[::-1] para invertir la cadena y compárala con el texto original.

Solución disponible después de 3 intentos