Qué es una función en Python
Una función es un bloque de código con nombre que recibe unos valores, hace un trabajo y devuelve un resultado. Se define una vez con def y se usa tantas veces como quieras.
Una tienda calcula el IVA de miles de productos. Con una función escribe la cuenta una sola vez y la reutiliza en todos.
Al final de esta lección
Nota
Puedo escribir una función que recibe valores y devuelve un resultado.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Función | un bloque de código con nombre que se puede usar muchas veces | |
| Parámetro | un nombre que recibe un valor dentro de la función | price |
| Argumento | el valor que das al llamar a la función | 100 |
| return | la orden que devuelve el resultado y termina la función | |
| Ámbito | la parte del programa donde existe una variable |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
def define la función y return responde
Escribe def, el nombre, los parámetros entre paréntesis y dos puntos. El cuerpo lleva sangría.
Un parámetro es el nombre que usa la función por dentro. Un argumento es el valor real que das al llamarla. return devuelve el resultado y termina la función.
Tu primera función: el IVA de un precio
# Una función que añade el 21 % de IVA a un precio.
def with_vat(price):
return price * 1.21
print(with_vat(100))
print(with_vat(50))
# Escribe una función half(price) que devuelva la mitad y llámala con 30.
Ejemplo resuelto: una llamada paso a paso
| Paso | Qué pasa | Valor |
|---|---|---|
| 1 | Llamas a with_vat(100) | El argumento es 100 |
| 2 | El parámetro price recibe el argumento | price = 100 |
| 3 | Python calcula price * 1.21 | 121.0 |
| 4 | return devuelve el resultado | print muestra 121.0 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Escribe un guion con una función
printf 'def with_vat(price):\n return price * 1.21\n\nprint(with_vat(100))\n' > ~/iva.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejecútalo
python3 ~/iva.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que print y return hacen lo mismo. print solo escribe en pantalla y el valor se pierde. return entrega el valor a quien llamó a la función, que puede guardarlo o calcular con él.
Python ya trae muchas funciones hechas
Ya has usado print, range y type. Python trae más. len cuenta los caracteres de un texto, abs quita el signo de un número y max da el mayor de varios.
Antes de escribir una función, mira si ya existe. Y cuando la escribas, que haga una sola cosa y tenga un nombre que la diga.
Prueba tres funciones que ya existen
python3 -c "print(len('terminal'), abs(-4), max(3, 9, 5))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una variable de dentro no existe fuera
Una variable creada dentro de una función solo existe allí. Ese es su ámbito. Cuando la función termina, la variable desaparece.
Por eso una función devuelve sus resultados con return: es la única forma de sacarlos.
Escribe un guion con una variable interna
printf 'def double(x):\n result = x * 2\n return result\n\nprint(double(4))\nprint(result)\n' > ~/ambito.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejecútalo y lee el error
python3 ~/ambito.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una prueba pequeña comprueba tu función
Una prueba es una línea que dice qué resultado esperas. Con assert Python para el programa con un error si lo que escribes no es cierto.
Escribe las pruebas antes que la función o justo después. Prueba un caso normal y un caso extremo.
Prueba una función con assert
def is_even(number):
return number % 2 == 0
# assert para el programa con un error si algo no es cierto.
assert is_even(4) == True
assert is_even(7) == False
print("Las pruebas pasan")
# Añade assert is_even(10) == False y mira el error que sale.
Un assert que se cumple
python3 -c "assert 2 + 2 == 4; print('bien')"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.