viernes, 3 de diciembre de 2010

Programación en Python

Programación en Python

En esta sección vamos a aprender lo básico para poder trabajar con Python. Aprendremos cual es la estructura de un script, como trabajar con funciones, como importar módulos, bucles y más. No profundizaremos demasiado, lo mínimo para poder crear nuestros scripts y añadirle funcionalidades. Durante esta sección no vamos a escribir código para Gimp, nos vamos a centrar a escribir código en Python. Para ello tenemos que tenerlo instalado. Escribiremos nuestro código en nuestro editor favorito y le ponemos el nombre que queramos con extensión ".py". Luego para ejecutarlo, desde línea de comandos escribimos:
>>> python nombre_script.py
Todos los ejercicios se encuentra empaquetados y te lo puedes bajar en:
http://www.agali.org/javielinux/documentacion.php
aunque posiblemente lo hayas obtenido con este documento.

2.1. Estructura de un script

Un script en Python básicamente tiene 3 partes importantes. La primera sería donde importamos los módulos necesarios que luego utilizaremos en nuestro código, la segunda donde tenemos las variables globales y las funciones, y la tercera el programa en sí.
Tenemos que pensar en los módulos como código que nos ofrece Python para poder hacer un trabajo concreto. Por ejemplo, Python tiene módulos para trabajar con archivos XML, para trabajar con directorios (leer un directorio, recorrerlo, etc.), para trabajar con información del sistema, para trabajar con imágenes, en realidad Python tiene módulos para casi todo. Así que podremos importar estos módulos y utilizarlos para algunas de nuestras tareas. Cuando importamos un módulo no tenemos que saber como hace las cosas, sino simplemente como tenemos que utilizarlo para hacer nuestro trabajo. Un módulo en Python se importa de la siguiente manera:
import nombre_modulo
Por otra parte, las funciones en Python (y en cualquier otro lenguaje) nos sirven para no tener que repetir una y otra vez un trozo de código. Las funciones nos las tenemos que crear nosotros mismos y nos servirán para hacer algún trabajo concreto. Por ejemplo, podemos crear una función que sume dos números y nos devuelva el resultado o lo escriba por pantalla. Las funciones en Python se declaran de la siguiente forma:
>>> def add(p1, p2):
>>>  add = p1 + p2
>>>     return "Suma: " + str(add)
   
La palabra reservada "def" nos dice que estamos creando una función, luego colocamos el nombre de nuestra función, lo siguiente es colocar entre paréntesis los parámetros que vamos a utilizar separados por comas y por último podemos ":". A continuación escribimos el código de nuestra función. El código tiene que está indentado, esto es muy importante. Así cada línea de código que tengamos en nuestra función estará separada por un tabulador, así Python sabrá que ese código pertenece a esa función, en el momento que una línea no tenga esa separación, ese código no pertenecerá a la función. En el código de ejemplo, en la primera línea sumamos los dos parámetros y en la segunda devolvemos una cadena con la suma. Para esto último utilizamos la palabra reservada "return". Usamos str() para convertir el número en cadena de texto. Para llamar a nuestra función desde el código principal lo hacemos así:
>>> add(5, 7)
Esto llama a la función, que hemos llamado "add, pasándole los dos parámetros "5" y "7". A estas alturas todos sabemos ya lo que nos va a devolver, y si no voy a empezar a preocuparme, pues claro, devuelve "12", pero no sólo el número, exactamente devuelve la cadena "Suma: 12" que es lo que le hemos dicho a la función que haga. Pero ¿que hacemos ahora con esa cadena? Pues por ejemplo podemos mostrarla por pantalla. La función para mostrar por pantalla una cadena es "print", así nuestro código sería:
>>> print sumar(5, 7)
Esto ya escribiría por pantalla el resultado.
Estamos viendo todo por partes, luego veremos el código completo para ejecutarlo. Por último vamos a ver el código principal de nuestro script. El código que ejecuta Python al arrancar un script debe de encontrarse, normalmente al final del script después de las funciones, y luego de poner:
>>> if __name__ == "__main__":
Por supuesto, el código siguiente tendría que estar perfectamente indentado. No preoparse por entender esto, simplemente ponerlo. Además tampoco es necesario ponerlo, aunque nosotros lo pondremos.
A continuación vemos un código de un programa básico con las cosas que hemos visto hasta ahora.
>>> import sys
>>> def add(p1, p2):
>>>     add = p1 + p2
>>>     return "Suma: " + str(add)
>>> if __name__ == "__main__":
>>>     print sys.path 
>>>     print add(5, 7)
>>>     print add(4, 5)
>>>     print add(1, 3)
   
El código de este ejemplo se encuentra en el archivo "sample01.py".
Fijaros como lo primero que hacemos es importar los módulos. En nuestro caso importamos sólo uno, el módulo "sys" que contiene información del sistema (luego en el código principal lo utilizaremos para mostrar las diferentes rutas que tiene Python guardadas del sistema). Luego colocamos nuestra función y finalmente colocamos el código principal. En la primera línea del código principal mostramos los path de Python y luego mostramos la suma de varios números.
Para finalizar mirad este código:
>>> import sys
>>> def add(p1, p2):
>>>     add = p1 + p2
>>>     print "Suma: " + str(add)
>>> if __name__ == "__main__":
>>>     print sys.path 
>>>     add(5, 7)
>>>     add(4, 5)
>>>     add(1, 3)
   
El código de este ejemplo se encuentra en el archivo "sample02.py".
Este código escribe por pantalla exactamente lo mismo que el anterior, pero la diferencia es que la función no devuelve nada, es ella quien se encarga de imprimir por pantalla la suma directamente. Fijate que en la función "add" tiene dentro la llamada a "print".