Programar en Python
Historia de Python
Desarrollado en una semana por Guido van Rosum (según la leyenda), el lenguaje Python debe su nombre a los Monty Python, de los que Guido es admirador. Guido explica en su blog (http://python-history.blogspot.com.es/2009/01/personal-history-part-1-cwi.html) que, recién salido de la universidad, en 1982 entra en CWI como programador. CWI (Centrum Wiskunde & Informatica = centro de matemáticas e informática) es el centro de investigación holandés de matemáticas e informática, situado en Amsterdam (Países Bajos). Trabajó en un proyecto llamado ABC, que se abandonó por falta de éxito. En ese momento, se une al grupo que desarrolla Amoeba, un sistema distribuido basado en un micro núcleo desarrollado por CWI y la universidad de Amsterdam. Finalmente trabaja en el grupo multimedia. El lenguaje Python es el producto de esta experiencia en CWI. El lenguaje ABC fue la fuente de inspiración para Python, Amoeba la motivación y el grupo multimedia favoreció su desarrollo. Aunque CWI nunca invirtió en Python, se ha convertido en una herramienta importante utilizada tanto por el grupo Amoeba como por el equipo multimedia.
Iniciado a finales del año 1989, el desarrollo de Python produce una versión operativa al cabo de pocos meses. Un determinado número de personas utilizó Python en CWI. Los compañeros de Guido...
Particularidades de Python
En su origen, Python se diseñó para ser muy legible. Permite a un principiante poder escribir rápidamente un programa que funcione. Es así como los estudiantes o investigadores adoptan fácilmente el lenguaje y lo utilizan para sus trabajos. Encontramos Python tanto en la universidad como en el mundo industrial.
Los desarrolladores Python tienen a su disposición una librería muy extensa. Python está presente en muchos dominios, desde la programación de sistemas de desarrollo web, hasta aplicaciones gráficas de sistemas embebidos e incluso en el dominio del cálculo científico. Se puede comunicar con bases de datos clásicas o con directorios LDAP.
Python es un lenguaje interpretado. Se ejecuta en una máquina virtual que arranca cuando se lanza Python.
Python en modo consola
Python se puede utilizar de varias maneras. La más directa es el modo consola, que solo necesita una consola en modo texto y la escritura de comandos directamente en el prompt Python. La segunda posibilidad es el uso de un entorno de desarrollo llamado IDLE. Por último, es posible escribir programas en Python que se ejecutarán por uno u otro entorno.
Las dos ramas de Python están disponibles en la Raspberry Pi. En este capítulo se utilizará Python 3.
El objetivo de este capítulo es permitirle leer y modificar un programa en Python. El uso de programas demostrará las posibilidades del lenguaje, y será un primer paso para descubrir el lenguaje.
1. Inicio de Python
El lanzamiento de Python en una consola en modo texto se hace con el comando python para ejecutar Python 2.7 y con el comando python3 para ejecutar Python 3.4.
pi@raspberrypi ~ $ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more
information.
>>>
El prompt con el que Python le indica que espera un comando es >>>. Para salir de Python y volver a Linux, escriba exit() seguido de [Intro].
Sin entrar en las técnicas de programación, ya es posible usar Python como una calculadora (avanzada).
2. Utilizar Python como una calculadora
a. Operaciones básicas
Estos operadores realizan el cálculo de la expresión y muestran el resultado. Las # presentes en las líneas indican un comentario. Python ignora todo lo que sigue a la # en la línea.
>>> 2 + 3 # Suma
5
>>> 12 - 7 # Resta
5
>>> 6 * 4 # Multiplicación
24
>>> 24 / 6 # División
4.0
>>> 137 % 9 # Módulo: 137/9=15 restan 2
2
>>> 7 ** 2 # Elevar a una potencia
49
>>> 11 // 2 # División entera, los decimales se eliminan
5
>>> 3 * (5 + 2) # Calcula en primer lugar el contenido de los paréntesis
21
>>> 3 * 5 + 2 # El signo * es prioritario ...
Python en entorno gráfico
El uso de un entorno de desarrollo integrado facilita la escritura y puesta a punto de los programas en Python. La Raspberry Pi ofrece un entorno para cada versión de Python. En este capítulo se utilizará IDLE de Python 3.
1. El entorno de desarrollo IDLE
Para abrir la ventana del entorno de desarrollo Python, pulse en Menú y después en Programación. Por último, pulse en Python 3 (IDLE).

La versión de Python utilizada por el entorno IDLE, se indica en la primera línea. Aquí es la versión 3.4.2. Es posible que la versión disponible cuando utilice Python sea diferente.
El entorno IDLE da asistencia a la escritura de programas en Python con la coloración sintáctica, la indentación automática y la visualización de tooltips de ayuda (CallTips).
a. Ajustar el tamaño de los caracteres
Si los caracteres que se muestran en la ventana IDLE le parecen muy pequeños, puede ajustar su tamaño como desee.
En el menú Options, pulse en Configure IDLE… Se abrirá la siguiente ventana.

La parte izquierda le permite seleccionar el tipo de letra que desea utilizar, así como su tamaño. También puede marcar la opción Bold si desea que el texto esté en negrita.
La parte derecha de esta ventana ajusta la indentación automática de Python, normalmente fijada...
Definir una función
Los ejemplos de scripts anteriores son cortos, adaptados a una tarea única y bien definidos. El desarrollo de programas más largos hace necesaria la escritura de numerosas líneas de código. La escritura y el mantenimiento del programa se hacen cada vez más complicados.
Un buen método para abordar un programa complejo consiste en descomponerlo en múltiples tareas sencillas, de tal manera que cada una se pueda tratar por separado. Por otro lado, habitualmente comprobamos que una misma tarea aparece varias veces en un script, y es interesante no reescribir trozos de código idénticos cada vez.
En los ejemplos de scripts, las funciones print() e input() utilizadas son las funciones predefinidas del lenguaje Python. Es posible enriquecer el lenguaje definiendo sus propias funciones.
Una función se define por:
-
Su nombre, que debe ser único para que el intérprete de Python pueda identificarla de manera determinada.
-
Sus argumentos, que son los datos que se pasan a la función para que los trate.
-
Su salida, que es el resultado que devuelve después del tratamiento de los datos.
Es posible que una función no devuelva ningún valor de retorno y solo ejecute instrucciones. En este caso, usamos el nombre de procedimiento, pero fundamentalmente su uso es idéntico al de una función.
Es obligatorio que una función se defina antes...
Utilizar los módulos
El desarrollo de un script puede implicar la creación de numerosas funciones. La agrupación de funciones en un módulo permite almacenar juntas las funciones especializadas en módulos separados y llamarlas bajo demanda (cálculos, tratamiento de imágenes, acceso a archivos...). El uso de estas funciones se hace integrando al script el módulo que las contiene.
1. Los módulos internos
Durante la instalación de Python, se instala un determinado número de módulos al mismo tiempo que Python. Dan acceso:
-
Al tratamiento de cadenas de caracteres (string, curses, etc.),
-
Al sistema (sys, time, os),
-
A las bases de datos (anydbm, shelve),
-
A los cálculos (maths, random).
2. Crear un módulo
Un módulo es simplemente un archivo que contiene las funciones que el programador desea agrupar. Integra generalmente un programa de prueba, que permite comprobar que funcionan las funciones incluidas en el módulo. Si es necesaria la modificación de una o varias funciones, el script de prueba validará que las funciones contenidas en el módulo siguen funcionando normalmente.
El siguiente ejemplo muestra cómo crear un módulo llamado cálculo. Este módulo contiene la función multipli(), así como un programa de prueba destinado a comprobar el funcionamiento correcto de la función.
Este ejemplo utiliza...
Leer y escribir en un archivo
El archivo es un medio práctico para almacenar datos cuando:
-
La cantidad de información a conservar es muy importante y puede desbordar la memoria de la Raspberry Pi.
-
Los datos se deben conservar después de apagar la Raspberry Pi.
-
El archivo contiene datos recuperados mediante descarga (cuenta bancaria, datos del tiempo, etc.).
Por supuesto, Python ofrece mecanismos para acceder a los archivos, en modo de lectura y de escritura.
Como para consultar un libro impreso en una librería, el uso de un archivo necesita conocer su nombre para localizarlo. A continuación hay que abrir el archivo, que se puede leer secuencialmente (como una novela) o accediendo a cualquier lugar del archivo (como un libro de recetas). Cuando se termina el trabajo, el archivo, al igual que el libro, se cierra.
1. Creación de un archivo
La creación de un archivo en Python se hace abriendo en primer lugar el archivo con la función open() y después escribiendo los datos en este archivo con la función write(). La función open() devuelve un descriptor que permite el acceso al archivo.
-
En modo escritura: si el archivo ya existe, se elimina y se sustituye por el nuevo archivo. La sintaxis es: open("nombre_archivo","w").
-
En modo adición: los datos se escriben al final del archivo, sin modificar los datos presentes en el archivo. La sintaxis es: open("nombre_archivo","a").
A continuación, se cierra el archivo con close().
Ejemplo de creación de archivo (creaArch.py)
# Creación...
Ir más allá con Python
Las páginas de este capítulo sobre Python tienen como objetivo presentar el lenguaje y permitir a un usuario de la Raspberry Pi entender un programa escrito en Python, con el objetivo de aportarle modificaciones.
Si tiene que crear programas para un uso profesional con Python, puede utilizar el libro Python 3, los fundamentos del lenguaje. Este libro de Sébastien Chazallet, aparecido en Ediciones ENI dentro de la colección Recursos Informáticos, permite conocer cómo usar Python para resolver problemas (protocolos, servidores, imágenes...). Tiene numerosos ejemplos, en forma de tutoriales, que cubren los dominios actuales: gestión de datos, interfaces web, gráficos, etc.
Como todo lenguaje de programación, Python necesita una inversión que será largamente recompensada por la satisfacción de poder escribir sus propios programas en función de sus necesidades.