10.07.2015 Views

TuxInfo 21 - Index of

TuxInfo 21 - Index of

TuxInfo 21 - Index of

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Especialmente sys.path es una lista que contiene las rutas donde el intérprete busca losmódulos. La misma se inicializa con el contenido de la variable de entorno PYTHONPATH, peroen el caso de Jython, como ya se mencionó, se adicionan las rutas incluidas en la variableCLASSPATH. La segunda y tercera línea muestran cómo añadir los ficheros jar en los que sedistribuye SSJ y la librería Colt del CERN (que es una dependencia) si no estuvieran ya allí. Portanto las instrucciones siguientes motivan que las clases dentro del paquete umontreal.iro.lecuyer(Java) sean localizadas en estos ficheros y puestas a disposición del script de Python. ¡Qué fácilverdad! Como en este caso se utiliza la instrucción from ... import sólo estarán disponibles lasclases incluidas después de la palabra clave import. Como se puede constatar, las mismasinstrucciones se utilizan para importar módulos de Python y, en otros casos, paquetes de Java ynamespaces de .NET. El intérprete es bastante listo como para determinar el tipo de módulo quese desea importar.Después de tener a mano las funcionalidades básicas que <strong>of</strong>rece el intérprete y de acceder algran cúmulo de librerías y herramientas disponibles hoy… ¡a programar! El código Python secoloca normalmente en ficheros de texto con la extensión .py. En ellos los programadoresimplementan las aplicaciones finales, y también los artefactos reutilizables. Para utilizar uncomponente definido en un módulo, primeramente hay que localizarlo. Actualmente el intérpretede Python es capaz de cargar un módulo situado en el sistema local de archivos o dentro devarios tipos de archivos (e.g. ZIP, EGG, JAR, WAR, EAR), e incluso en un servidor en la redlocal o en Internet (módulo urlimport). En cualquier caso, como ya vimos se usa la sintaxisimport module as name. Como consecuencia el intérprete crea un objeto del tipo module y leañade los campos __name__ y __file__ respectivamente con el nombre del módulo y la ruta delfichero de donde fue cargado. Considerar un módulo como un objeto es una característica quediferencia a Python de Java, Object Pascal, e incluso Smalltalk. La posterior ejecución del scriptva añadiendo al módulo los objetos, funciones, etcétera que el programador desea <strong>of</strong>recer.También es posible cargar directamente los elementos contenidos en un módulo, ya sea uno a lavez (from module import field1 as name) o al unísono (from module import *). En el últimocaso, si el módulo contiene en el atributo __all__ una lista de cadenas de caracteres, sólo secargan los elementos del módulo con estos nombres. Sin embargo, a diferencia de Java, lasdeclaraciones hechas dentro de una clase no se pueden importar directamente.Hay otros dos usos importantes para los objetos de tipo module. Al igual que en Java, el códigode Python se puede organizar de manera jerárquica con ayuda de paquetes (carpetas en elsistema local de archivos). La diferencia con respecto a Java es que un paquete ya cargado enPython se representa también con un objeto module. La carpeta correspondiente tiene que incluirun archivo llamado __init__.py, que se ejecuta en el momento en que se importa el paquete47

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!