Funciones#
Hemos utilizado funciones en lecciones anteriores. Las funciones tienen un nombre y parámetros. Algunas de ellas devuelven un resultado, otras no. Normalmente las llamamos usando resultado = nombre(parámetros).
Ver también
Echemos un vistazo a algunas funciones, por ejemplo print(texto) y pow(x, y). La función print toma un parámetro (o múltiples parámetros) y no devuelve nada:
result = print('Hello world')
Hello world
result
La función pow tiene dos parámetros y devuelve un resultado:
result = pow(2, 3)
result
8
Funciones personalizadas#
Puedes DEFinir tus propias funciones usando la declaración def. Después de la declaración def, debes especificar el nombre de tu función y entre paréntesis sus parámetros. A continuación, sigue dos puntos : y todas las líneas de código siguientes que estén indentadas forman parte de esta función. Una declaración return final envía el resultado de vuelta desde donde se llamó a la función.
def sum_numbers(a, b):
result = a + b
return result
Luego puedes llamar a tu función tantas veces como quieras
sum_numbers(3, 4)
7
sum_numbers(5, 6)
11
A veces, quieres guardar el resultado de tu función en una variable.
c = sum_numbers(4, 5)
print(c)
9
Simplificar código usando funciones#
Supongamos que tienes un algoritmo complicado que puede decirte si un número es impar o par. Pongamos este algoritmo en una función y llamémoslo más tarde. Para nuestro algoritmo, usaremos el operador módulo %.
def print_odd_or_even(number):
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
print_odd_or_even(3)
3 is odd
print_odd_or_even(4)
4 is even
print_odd_or_even(10)
10 is even
Así, en lugar de escribir el mismo bloque if-else una y otra vez, podemos simplemente llamar a nuestra función personalizada print_odd_or_even.
Documentar funciones#
Puedes documentar lo que hace una función en su llamada cadena de documentación (doc string). La cadena de documentación va justo después del encabezado de la función y se ve así:
def square(number):
'''
Eleva al cuadrado un número multiplicándolo por sí mismo y devuelve su resultado.
'''
return number * number
Luego puedes leer la documentación de la función así:
print(square.__doc__)
Squares a number by multiplying it with itself and returns its result.
También puedes probar esto si quieres que se muestre la cadena de documentación lado a lado en tu notebook:
square?
Signature: square(number)
Docstring: Squares a number by multiplying it with itself and returns its result.
File: /var/folders/p1/6svzckgd1y5906pfgm71fvmr0000gn/T/ipykernel_11914/1507435947.py
Type: function
Por cierto, puedes hacer esto con cualquier función:
import math
print(math.sqrt.__doc__)
Return the square root of x.
print(math.exp.__doc__)
Return e raised to the power of x.
Ejercicio#
Escribe una función que tome dos parámetros: number_of_points_in_exam y number_of_total_points_in_exam y devuelva una calificación del 1 al 5. Los estudiantes con > 95% de los puntos obtienen calificación 1, por encima del 80% obtienen calificación 2, por encima del 60% calificación 3 y por encima del 50% calificación 4. Los estudiantes con menos del 50% obtienen calificación 5 y tienen que repetir el examen. Luego, llama a la función para tres estudiantes que obtuvieron 15, 25 y 29 puntos en un examen con 30 puntos totales.