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:
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
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.
Publicar un comentario