Las funciones son partes de código que usamos varias veces en el mismo,ya que una función la podemos definir una vez pero llamarla todas las que sea necesario,por ejemplo tenemos que hacer lo siguiente:
Tenemos nuestra edad,la fecha de nacimiento, después lo que queremos es saber cuantas horas hemos vivido,esto seria un poco complicado ya que tenemos que definir los dias de los meses,muchas estructuras selectivas y demás cosas, así que solo haremos que calcule nuestra edad sacando el dato de la edad ingresado por nosotros y la fecha actual sacada de un modulo,esta la multiplicara por 365 dias de cada año y 24 horas de cada dia,para saber cuantas horas habrá uno vivido cuanto cumpla dicha edad si no es que ya la cumplio(a eso me refiero con estructuras selectivas),pero también queremos hacerlo para jugar,por ejemplo le hacemos el test a un pariente o a alguien,osea los datos serian distintos:
Ese es el problema,facil el problema porque solo trata de algunas operaciones aritmeticas:
Por ejemplo esta seria la solución pero para una sola fecha de nacimiento:
#!/usr/bin/env python3
from datetime import datetime # Importamos el tiempo actual
nacimiento = numeros # Define el año en que naciste
fecha = datetime.now()
ahora = fecha.year
vida = ahora - nacimiento
print ("A tus ", vida, "años habas vivido", vida * 365 * 24,"horas")
Bien como vemos es un ejemplo,para saber la fecha exacta debemos definir el mes y dia y hora,luego hacer una operación de resta sobre estructuras selectivas para tener el dato exacto.
El hecho es que para hacer esto de nuevo con una nueva persona o un nuevo dato tendriamos que hacerlo de nuevo,o por lo menos definir la fecha nuevamente, vida y print:
Por ejemplo(les pongo en rojo todo lo que tendríamos que modificar) para añadir otra persona :
#!/usr/bin/env python3
from datetime import datetime # Importamos el tiempo actual
nacimiento1 = numeros # Define el año de la persona 1
nacimiento2 = numeros # Define el año de la persona 2
fecha = datetime.now()
ahora = fecha.year
vida1 = ahora - nacimiento1
vida2 = ahora - nacimiento2
print ("A tus ", vida1, "años habas vivido", vida1 * 365 * 24,"horas") # Imprime la persona 1
print ("A tus ", vida2, "años habas vivido", vida2 * 365 * 24,"horas") # Imprime la persona 2
Esto seria muy malo y muy mala practica porque para eso existen las funciones,asi que vamos a ver como son y como funcionan para reducir ese codigo o algoritmos de ese tipo a un codigo simple,limpio y funcional:
Para empezar las funciones en python se definen con def,de ingles defining tambien llevan parametros y el freno de la sintaxis se define por espacios,ya que en Perl,C o javascript la sintaxis para terminar una linea es punto y coma (;), aquí en python la estructura de funciones y de todo se define por espacios:
En C:
#include <stdio.h>
int main()
{
printf ( "También escribo en C\n" );
return 0;
}
En Perl:
#!/usr/bin/env perl
&hola("Hola","Mundo")
sub hola {
my ($h,$m) = @_;
print "Y en Perl :D\n";
print "$h $m\n";
}
Como podemos ver aqui los espacios de reconocimiento de terminacion de linea son definidos por (;),en python como dije son definidos por espacios,pero solo en funciones,clases,estructuras selectivas,bulces u otros operadores de datos de ese tipo,no en todo se deb usar espacios,como en C o Perl se usa (;) en casi todas las lineas:
Vamos a definir nuestra primera funcion:
#!/usr/bin/env python3
# Primera funcion
def primera(n,l): # Le pasamos dos argumentos
print ("Argumento 1: ", l,"\nArgumento 2: ", n)
# Llamamos la funcion
primera(2,"Texto") # Le pasamos los dos datos
Lo voy a explicar mas detalladamente:
def primera(n,l):def : # def se usa para comenzar una nueva función,seguida de esta debe ir el nombre de dicha función y termina con dos puntos (:) para indicar que comienza el contenido de nuestra funcion
primera # Es el nombre de nuestra primera funcion,podemos usar el que gustemos
(n,l) # Dentro de estos parentesis definiremos el nombre de los valores que le pasaremos cuando llamemos la funcion,estos valores/variables son locales,solo serán y tendran este valor dentro de la misma funcion.
primera(2,"Texto")
primera # Si escribimos el nombre de la función ya lejos de su alcance(fuera de los espacios) python la llama a escena,si le definimos parámetros estos se los tenemos que pasar o de otra manera tendríamos que definirlos en la misma función,en este caso n es igual a 2 y l es igual a Texto ya dentro de la función.
Bien sabiendo esto podemos realizar el código del principio de nuevo pero con funciones:
#!/usr/bin/env python3
from datetime import datetime
fecha = datetime.now() # Variables
ahora = fecha.year # Globales
def calcula(nacimiento):
vida = ahora - nacimiento
print ("A tus ", vida, "años habras vivido", vida * 365 * 24, "horas")
calcula(numeros) # Numero de primer persona
calcula(numeros) # Numero de segunda persona
calcula(numeros) # Numero de tercer persona
# Etc
Igual que en todos los lenguajes manejo mis datos como salida estándar en la consola desde print,a menos que nesesite usar ese dato para otra cosa,por ejemplo si quiero ese dato pero no lo quiero imprimir no necesariamente tengo que usar print para que devuelva un numero puedo imprimirlo desde la llamada de la funcion o incluso guardar el resultado en una variable:
Todo esto se logra con return que maneja la llamada de la función como el dato que regresa:
Por ejemplo necesitamos saber las horas pero necesitamos también multiplicarlos por los minutos:
#!/usr/bin/env python3
from datetime import datetime
fecha = datetime.now()
ahora = fecha.year
def calcula(nacimiento):
vida = ahora - nacimiento
return vida * 365 * 24 # Ahora estamos regresando un valor al llamar a la funcion
persona1 = calcula(1990) # Convertimos el regreso de la funcion llamada en una variable
persona2 = calcula(1980) # Convertimos el regreso de la función llamada en una variable
print ("Dias vividos de la persona1 : ", persona1, "en minutos: ", persona1 * 60)
print ("Dias vividos de la persona1 : ", persona2, "en minutos: ", persona2 * 60)
De momento eso es todo,en la próxima parte hablaremos del alcance de las variables,usar diccionarios o listas en las funciones,definir variables desde funciones y de *args & **kwargs.
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.