6. Funciones II

Vídeo

Notas personales

Comencemos definiendo una función que suma dos números dados (5 y 7), mediante el mecanismo aprendido en la lección anterior:

def suma():
    num1 = 5
    num2 = 7
    print(num1 + num2)


suma()

Podemos reutilizar tantas veces como queramos la función suma(). No obstante, su utilidad así declarada es bastante limitada. Nos gustaría que no siempre sumara los dos mismos valores, sino aquellos que nos interesen en cada llamada. Para ello emplearemos los parámetros o argumentos.

Nota: aunque el autor del curso se refiere a los términos ‘‘parámetros’’ y ‘‘argumentos’’ casi como si fueran sinónimos, en realidad hay un sutil matiz que los diferencia: los parámetros son las variables que aparecen en la definición de una función o método; cuando se produce la llamada a dicha función, los argumentos son los datos que pasamos a los parámetros de la mencionada función.

Definamos de nuevo la función suma(), ahora con dos parámetros, con el objetivo de que realice la suma de dos números que pasaremos como argumentos:

def suma(num1, num2):
    print(num1 + num2)


suma(5, 7)  # 12
suma(2, 3)  # 5
suma(35, 358)  # 393

Tal y como está declarada la nueva función de suma, obligatoriamente hemos de pasarle dos argumentos o sino aparecerán errores.

suma(7)
# TypeError: suma() missing 1 required positional argument: 'num2'
suma(1, 2, 3)
# TypeError: suma() takes 2 positional arguments but 3 were given

Puede resultar conveniente, por legibilidad, pasar los argumentos a una función utilizando el esquema parámetro=valor.

suma(num1=5, num2=7)  # 12

Además, las funciones

  • pueden poseer parámetros de diferentes tipos y
  • devuelven valores siempre y cuando empleemos la instrucción return.
def suma(num1, num2):
    resultado = num1 + num2
    return resultado


suma(5, 7)

La ejecución del anterior bloque de código no muestra resultado alguno en la consola. La función devuelve el resultado, pero no lo hemos imprimido. Así,

print(suma(5, 7))  # 12

Una ventaja de utilizar la instrucción return reside en que podemos almacenar los valores que devuelve una función en variables y trabajar posteriormente con ellas.

almacena_resultado = suma(5, 8)
print(almacena_resultado)  # 13

actualiza_resultado = suma(almacena_resultado, 8)
print(actualiza_resultado)  # 13 + 8 = 21

Nota técnica: Python pasa siempre los valores por referencia, no por valor.

Código fuente

El código fuente y los posibles ficheros externos generados correspondientes a esta lección se encuentran disponibles para su consulta en la carpeta /lecciones/06/ del repositorio.

Anterior
Siguiente