- Ordenadores
- Pieza de frambuesa
- Cómo crear sus propias funciones en Python on the Raspberry Pi
Libro Relacionado
Por Sean McManus, Mike Cook
Una de las cosas que el Pi de Frambuesa te permite hacer en Python, y muchos otros lenguajes de programación, es crear una función. Una función puede recibir información del resto del programa (uno o más argumentos), trabajar en ella y luego devolver un resultado.
Antes de que pueda utilizar una función, debe definirla, lo que se hace mediante una sentencia def. Para indicar a Python qué instrucciones pertenecen a la función, hay que sangrarlas debajo de la sentencia def. He aquí un programa de ejemplo para que se familiarice con la idea de las funciones y cómo las usaremos:
# Ejemplo de funciones dictionarycheck(mensaje): print "I will look in the dictionary for", retorno de mensaje "hello"dictionarycheck("test message")result=dictionarycheck("test message2")print "Reply is:", result
Le hablaremos de ese programa en un momento, pero he aquí un vistazo de lo que se muestra en pantalla cuando lo ejecuta:
Buscaré en el diccionario para el mensaje de pruebaMiraré en el diccionario para el mensaje de prueba2Respuesta es: hola
Este es un programa corto pero poderoso porque le dice casi todo lo que necesita saber sobre las funciones. Como puede ver, la función se definió en el campo +
inicio del programa, con esta línea:
def dictionarycheck(mensaje):
Esto configura una función con el nombre dictionarycheck(), pero también la configura para recibir una parte de la información del resto del programa y ponerla en la variable que hemos llamado mensaje.
La siguiente línea imprime una frase que dice «Buscaré en el diccionario» seguida del contenido del mensaje variable. Esto significa que imprime cualquier información que se envíe a la función. La siguiente línea que comienza con return sale de la función y envía un mensaje de vuelta, que en nuestro ejemplo es hello.
Las funciones son unidades autónomas por lo que el mensaje variable no puede ser usado por el resto del programa (es lo que se conoce como una variable local). Cuando esté escribiendo sus propias funciones, debería darles un trabajo que hacer, y luego usar return para enviar el resultado de vuelta al resto del programa.
Las funciones no se ejecutan hasta que se le dice específicamente al programa que las ejecute, así que cuando Python ve la definición de la función, sólo la recuerda para cuando la necesite más tarde. Ese momento llega poco después, cuando se emite el comando:
dictionarycheck("mensaje de prueba")
Esto ejecuta nuestra función dictionarycheck(), y le envía el texto «test message» para trabajar con él. Cuando la función se inicia, Python pone «mensaje de prueba» en la variable de la función llamada mensaje, y luego imprime el texto en pantalla que lo contiene. El texto «hello» es devuelto por la función, pero no tiene forma de captar ese mensaje.
El siguiente fragmento de código le muestra cómo puede obtener información de una función. En lugar de simplemente ejecutar la función, se configura una variable para que sea igual a su salida, de esta manera:
result=dictionarycheck("test message2")print "La respuesta es:", resultado
Cuando el texto «hello» es devuelto por la función, entra en el resultado variable, y el programa principal puede imprimirlo en la pantalla.
Este sencillo ejemplo ilustra algunas de las razones por las que las funciones son una idea brillante, y se han convertido en bloques de construcción fundamentales en muchos lenguajes de programación:
- Las funciones le permiten reutilizar partes de su programa. Por ejemplo, hemos usado nuestra función para mostrar dos mensajes diferentes aquí, simplemente enviando a la función un argumento diferente cada vez. Cuando se utilizan programas más sofisticados, la posibilidad de reutilizar partes del programa hace que éste sea más corto, más simple y más rápido de escribir.
- Las funciones facilitan la comprensión del programa porque dan un nombre y una estructura a un conjunto de instrucciones. Cada vez que alguien ve dictionarycheck() en nuestro programa, puede hacer una buena estimación de lo que está pasando. A medida que trabaje en proyectos más grandes, verá que la legibilidad es cada vez más importante.
- Facilita el mantenimiento y la actualización de su programa. Puede encontrar fácilmente qué partes del programa desea cambiar, y todos los cambios que necesita hacer estarán en la misma parte del programa. Si usted piensa en una mejor manera de hacer una búsqueda en el diccionario más tarde, sólo tiene que modificar la función, sin perturbar el resto del programa.
- Las funciones facilitan la creación de prototipos. Eso es lo que hemos hecho aquí: Hemos creado un programa experimental que toma texto y envía un mensaje. Eso es lo que hará nuestra función terminada dictionarycheck(), excepto que ésta envía el mismo mensaje de vuelta cada vez y la terminada enviará diferentes mensajes de vuelta dependiendo de lo que haya dicho el reproductor.