Temas > Programacion > Python > Modulos y paquetes en python
Julio

Módulos y Paquetes
Módulos
 Para facilitar el mantenimiento y la lectura los programas demasiado
 largos pueden dividirse en módulos, agrupando elementos relaciona-
 dos. Los módulos son entidades que permiten una organización y
  división lógica de nuestro código. Los ficheros son su contrapartida
física:
 cada archivo Python almacenado en disco equivale a un módulo.
 Vamos a crear nuestro primer módulo entonces creando un pequeño
 archivo modulo.py con el siguiente contenido:
<?
     def mi_funcion():
          print â??una funcion"
     class MiClase:
          def __init__(self):
               print â??una clase"
     print â??un modulo"
?>
 Si quisiéramos utilizar la funcionalidad definida en este módulo en
 nuestro programa tendríamos que importarlo. Para importar un 
 módulo se utiliza la palabra clave import seguida del nombre del
módulo,
 que consiste en el nombre del archivo menos la extensión. Como 
  ejemplo, creemos un archivo programa.py en el mismo directorio en el que
 guardamos el archivo del módulo (esto es importante, porque si no se
 encuentra en el mismo directorio Python no podrá encontrarlo), con el
 siguiente contenido:
     import modulo
Aunque se considera una mala práctica, también es posible importar
todos los nombres del módulo al espacio de nombres actual usando el
caracter *:
   from time import *
Ahora bien, recordareis que a la hora de crear nuestro primer módulo
insistí en que lo guardarais en el mismo directorio en el que se en-
contraba el programa que lo importaba. Entonces, Âcómo podemos
importar los módulos os, sys o time si no se encuentran los archivos
os.py, sys.py y time.py en el mismo directorio?
A la hora de importar un módulo Python recorre todos los directorios
indicados en la variable de entorno PYTHONPATH en busca de un archivo
con el nombre adecuado. El valor de la variable PYTHONPATH se puede
consultar desde Python mediante sys.path
<?
   >>> import sys
   >>> sys.path
?>
De esta forma para que nuestro módulo estuviera disponible para
todos los programas del sistema bastaría con que lo copiáramos a uno
de los directorios indicados en PYTHONPATH.
En el caso de que Python no encontrara ningún módulo con el 
nombre especificado, se lanzaría una excepción de tipo ImportError.
Por último es interesante comentar que en Python los módulos
también son objetos; de tipo module en concreto. Por supuesto esto
significa que pueden tener atributos y métodos. Uno de sus 
atributos, __name__, se utiliza a menudo para incluir código ejecutable en
un
módulo pero que este sólo se ejecute si se llama al módulo como 
programa, y no al importarlo. Para lograr esto basta saber que cuando se
ejecuta el módulo directamente __name__ tiene como valor â??__main__",
mientras que cuando se importa, el valor de __name__ es el nombre del
módulo:
<?
print â??Se muestra siempre"
if __name__ == â??__main__":
    print â??Se muestra si no es importacion"
?>
Otro atributo interesante es __doc__, que, como en el caso de fun-
ciones y clases, sirve a modo de documentación del objeto (docstring
o cadena de documentación). Su valor es el de la primera línea del
cuerpo del módulo, en el caso de que esta sea una cadena de texto; en
caso contrario valdrá None.

Paquetes

Si los módulos sirven para organizar el código, los paquetes sirven para
organizar los módulos. Los paquetes son tipos especiales de módulos
(ambos son de tipo module) que permiten agrupar módulos relacio-
nados. Mientras los módulos se corresponden a nivel físico con los
archivos, los paquetes se representan mediante directorios.
En una aplicación cualquiera podríamos tener, por ejemplo, un paque-
te iu para la interfaz o un paquete bbdd para la persistencia a base de
datos.
Para hacer que Python trate a un directorio como un paquete es nece-
sario crear un archivo __init__.py en dicha carpeta. En este archivo se
pueden definir elementos que pertenezcan a dicho paquete, como una
constante DRIVER para el paquete bbdd, aunque habitualmente se trata-
rá de un archivo vacío. Para hacer que un cierto módulo se encuentre
dentro de un paquete, basta con copiar el archivo que define el módulo
al directorio del paquete.
Como los modulos, para importar paquetes también se utiliza import
y from-import y el caracter . para separar paquetes, subpaquetes y
módulos.
<?
    import paq.subpaq.modulo
    paq.subpaq.modulo.func()
?>













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal