martes, 10 de mayo de 2016

Python VI (funciones)

Este es otro post dedicado a programación en Python, encontraréis todos los posts de este tipo juntos en el apartado Programación del blog. Y si queréis aprender más podéis visitar la web oficial de www.python.org

Hoy vamos a ver las funciones. Las funciones nos sirven para ahorrar tiempo de programación. Son pedazos de código que podremos reutilizar tantas veces como queramos en nuestros programas, por ejemplo, si necesitamos ejecutar una misma acción varias veces en nuestro programa, podemos crear una función a la que llamaremos cada vez que sea necesario.




1. Definir una función


Para crear una función usaremos la orden def seguida del nombre de la función, que debe respetar las mismas normas que ya vimos para la definición del nombre de una variable (comenzar con una letra minúscula, y si está formada por mas de una palabra las podemos unir con guión bajo ya que no acepta espacios en blanco), recordad usar el sangrado para todas aquellas líneas de código que forman parte de la función . Veamos un jemplo

# definimos una función que muestra los números del 1 al 10
def contar_10():
    for i in range(1,11):
        print(i)

# llamamos a la función una vez

contar_10()
# llamamos a la función una segunda vez
contar_10()

en el ejemplo anterior la función contar_10 es un código que muestra por pantalla los números del 1 al 10, fijáos que las líneas que forman parte de la función están sangradas. Luego llamamos a la función dos veces, de forma que veremos por pantalla los números del 1 al 10 dos veces.


2. Enviar parámetros a una función


Sin embargo esta función es muy poco funcional. Para mejorar este funcionamiento podemos enviar a las funciones lo que llamamos parámetros. Los parámetros son valores que enviamos a la función para que esta los utilice y se colocan entre los paréntesis después del nombre de la función. Veamos un ejemplo

# definimos una función que aplica un descuento a un importe que se pasa por parámetro
def aplicar_descuento_10 (importe):
    importe=(importe)-((importe*10)/100)
    print(importe)

# llamamos a la función pasando el importe de 100

aplicar_descuento_10(100)
# llamamos a la función pasando el importe de 150
aplicar_descuento_10(150)
# llamamos a la función pasando el importe de 200
aplicar_descuento_10(200)

en el ejemplo anterior definimos la función aplicar_descuento_10  a la que le pasamos el parametro importe, la función calcula un descuento del 10% sobre el importe enviado, luego llamamos a la función enviando como importe los valores 100, 150 y 200, de manera que la función nos devuelve 90, 135 y 180 respectivamente.


2.1 Enviar a una función mútlples parámetros


pero si es necesario podemos enviar más de un parámetro a una función, solamente los tenemos que separarlos por comas. Veamos otro ejemplo

# definimos una función que calcula el importe con el iva, 
# ambos valores los pasamos por parametro
def calcular_importe_iva(importe,iva):
    importe=(importe)+((importe*iva)/100)
    print(importe)

# llamamos a la funnción pasando importe 100 y iva 4

calcular_importe_iva(100,4)
# llamamos a la funnción pasando importe 200 y iva 12
calcular_importe_iva(200,12)
# llamamos a la funnción pasando importe 300 y iva 21
calcular_importe_iva(300,21)

en el ejemplo anterior definimos una función a la que enviamos dos parámetros importe y iva, luego llamamos a la función pasando los dos parámetros, la función nos muestra por pantalla el importe con el iva incluido.


3. Devolver valores con una función


Hasta ahora hemos visto funciones que ejecutan una acción, pero las funciones también nos pueden devolver valores. En python para que una función devuelva un valor debemos usar el comando return. Veamos un ejemplo reutilizando el código anterior

# definimos una función que calcula y devuelve el importe con el iva, 
# ambos valores los pasamos por parametro
def calcular_importe_iva(importe,iva):
    importe=(importe)+((importe*iva)/100)
    return(importe)

# llamamos a la funnción pasando importe 100 y iva 4 y lo asigamos a una variable

importe_total=calcular_importe_iva(100,4)
# mostramos el valor de la variable por pantalla
print(importe_total)

en este ejemplo la función devuelve un valor que asignamos a la variable importe_total que luego mostramos con pantalla con la orden print().


3.1 Devolver múltiples valores con una función


en algunos casos es posible que nuestra función tenga que devolver más de un valor, en este caso usaremos la orden return para devolver más de un valor separados por comas. La recuperación de los valores se hace de la misma forma, usando el separador de la coma con diferentes variables. Veamos un ejemplo

# definimos una función que recibe el importe y el iva y devuelve el importe+iva, 
# y el importe del iva por separado
def calcular_importe_iva(importe,iva):
    importe_total=(importe)+((importe*iva)/100)
    importe_iva=((importe*iva)/100)
    return(importe_total,importe_iva)

# llamamos a la funnción pasando importe 100 y iva 4 y asignamos los valores devueltos

precio_total,precio_iva=calcular_importe_iva(100,4)
print(precio_total)
print(precio_iva)

la función anterior recibe dos parámetros, importe y iva y devuelve dos parámetros el importe mas el iva y el importe del iva por separado, fijáos como devolvemos los valores con return(importe_total,importe_iva), y como recuperamos luego los valores asignandolos a dos variables con la llamada de la función precio_total,precio_iva=calcular_importe_iva(100,4). Al final mostramos por pantalla los valores de las dos variables.


Os animo a realizar cambios y pruebas. Hasta pronto.