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
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defintroduce la función, seguida del nombre y los parámetros entre paréntesis.- El
:abre el bloque indentado. returndevuelve 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:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # NoneUn return simple (sin valor) también devuelve None, pero puede servir como salida
anticipada:
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).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring: 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.
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.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedLas 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ú
Define una función `double(x)` que devuelva `x * 2`. Luego llámala con 7 y asigna el resultado a `result`. Evalúa `result`.
Mostrar pista
Usa return x * 2.
Solución disponible después de 3 intentos
Ejercicio de repaso
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)`.
Mostrar pista
return min(nums), max(nums)
Solución disponible después de 3 intentos
Desafío adicional
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.
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