Tutorial 5, Las funciones.

Hola a tod@s de nuevo, hoy os voy a hablar de una cosa imprescindible en python, las funciones, las funciones son como fragmentos de códigos asociados a un nombre, las cuales devuelven un valor de retorno (Aunque sea "none").

Para definir las funciones se usa la palabra reservada del lenguaje "def" seguido del nombre de la función, un pequeño ejemplo:

def suma():
        print 5+2

suma()



Es decir, primero, creamos una función llamada suma, el contenido de la función debe de ir tabulado como en los bucles del anterior tutorial, y después, en la última linea llamamos a la función suma, si no hubiera sido llamada, la función no se ejecuta, cuando usamos "def" tan solo definimos la función, pero si esta función no se llama, el código de la misma nunca será ejecutado; los paréntesis que veis son para especificar los argumentos de la función que son como "datos" que se le pueden pasar, en este caso no se le pasa ningún argumento.


Pero....¿y si quisiera que la función me sirviera para sumar números que yo elijo y no solo los que están predefinidos?, para eso vamos a utilizar los argumentos que había comentado arriba:

def suma(a, b):
         print a + b

suma(5, 2)

Cuando creamos la función, definimos que va a tener dos argumentos "a" y "b", es decir, se declaran separados por comas, yo he usado "a" y "b" para hacerlo mas simple pero podría haber sido "valor1" y "valor2", y al llamar a la función le pasamos los dos valores que necesita, es importante saber que el orden es importante, en este caso, "a" valdría 5 y "b" valdría 2, estas variables son locales, es decir, cuando termina de ejecutarse la función se destruyen, al igual que en las variables locales que se crean en un bucle for.

Cuando le pasamos valores a una función se debe especificar el número exacto de valores que acepta, ni mas, ni menos, si la función a sido definida con dos argumentos, ni lo podemos pasar uno, ni tres, si lo hacemos python nos tirará una excepción.

Como ya he comentado antes, una función devuelve un valor, en el anterior ejemplo no devuelve nada (técnicamente devuelve none) ya que tan solo imprime un texto por pantalla, cuando una función devuelve un valor digamos que es como si la función valiera eso por así decirlo, es como si la función dijera: "El resultado es este" y luego tu ese resultado lo usas como tu quieras, vamos a coger el ejemplo anterior y vamos a hacer que devuelva el valor en vez de que lo imprima:

def suma(a, b):
          return a+b

print suma(5, 2)

Para devolver un valor a través de una función se usa la palabra reservada "return" que significa devolver en inglés, y seguido, el valor o la expresión a devolver, después usamos print para imprimirlo por pantalla, como veis de esta forma si que es útil la función por que al devolver un valor, podemos sustituir un trozo de código por la función en sí.

Otro punto a destacar es que las funciones si o si se le deben pasar el número adecuado de valores, si una función fue definida con dos valores, se le deben pasar dos, ni uno ni tres, en caso de hacerlo python nos tiraría una excepción, pero digamos que hay unos trucos para que esto no pase, que es por ejemplo, asignarle a un argumento un valor por defecto:

def ope(a, b, c, d=5, e=3):
         return a+b-c+d*e
print ope(8, 7, 6)

En este caso la función "ope" devuelve el resultado de una operación compuesta, pero, tanto a "a" como a "b" se le han asignado un valor por defecto, así que en caso de no especificarlos al llamar a la función, usaran los que tienen por defecto, y si se especifican, los valores por defecto se omiten, he usado valores por defecto en dos argumentos pero se pueden usar en todos si uno quiere, en este caso los valores serían los siguientes:

a=8
b=7
c=6
d=5
e=3

Pero....¿y si queremos lo contrario?¿y si queremos que una función de 2 argumentos no tire una excepción si le paso 3 argumentos? para eso también hay un truco:

def suma(a, b, *otros):
        #usamos la coma en vez de "+" por que vamos a concatenar un cadena de   #texto con algo que no lo es, en este caso, una tupla.
        print los valores que sobran son, otros
        return a+b

print suma(5, 4, "hola", "pepe", 5)

Es decir, como último argumento ponemos * y un nombre que se usara como identificador, lo que hace python es crear una tupla con los valores que le pasemos de mas, como veis a una función no solo se le pueden pasar números si no también cadenas de texto, y dentro de las funciones pude usarse cualquier bucle o sentencia condicional que vimos en el anterior tutorial.

Bueno chic@s, espero que os haya gustado, esto es muy básico, además es imprescindible para programar, usen el lenguaje que usen, después de ver clases, objetos y otras cosas importantes que tengo que explicar, tratare este tema mas en profundidad, ya que esto aunque a simple vista es sencillo se puede complicar bastante, me despido de todos vosotros, hasta mañana, un abrazo a tod@s.

2 comentarios:

Dan dijo...

en el foro en el que has puesto el enlace, te he pedido ayuda, pero en tu blog he visto la solucion.
te animo a que escribas más sobre esto que me interesa,
enviame tu correo por si tengo alguna duda a dalmemail@gmail.com

Francisco Dominguez Lerma dijo...

Hola dan, lo primero, muchísimas gracias por comentar, siento mucho no haberte respondido en el foro, no he leído tu mensaje, y gracias por darme ánimos a seguir escribiendo, lo único que te pido es que al menos leas el blog y si conoces a alguien interesado en el mismo tema le comentes acerca de este blog, un abrazo y gracias.