Manual de Python: Módulos

Los módulos son librerías de funciones, archivos con extensión .py que contienen funciones, de manera que podemos utilizarlas en los scripts importándolas ya sea desde el propio script o desde otros módulos. El nombre del módulo es el nombre del fichero y dentro del módulo es accesible mediante la variable __name__.

Por ejemplo, el módulo fibo contiene dos funciones, fib() y print_fib(). El contenido de fibo.py es el siguiente:

def fib(n):
    "Devuelve la serie de Fibonacci hasta n"
 
    resultado = []
    a = 0
    b = 1
    while b < n:
        resultado.append(b)
        a = b
        b = a + b
    return resultado
 
def print_fib(n):
    "Imprime la serie de Fibonacci hasta n"
 
    print fib(n)

Para utilizar las funciones del módulo fibo en el intérprete interactivo las importaremos con import y podremos acceder a ellas con fibo.fib() y fibo.print_fib():

>>> import fibo
>>> fibo.print_fib(200)
[1, 2, 4, 8, 16, 32, 64, 128]
>>> print fibo.__name__
fibo

De la misma manera podemos utilizar las funciones de un módulo en un script:

#!/usr/bin/python
import fibo
 
print fibo.fib(100)
fibo.print_fib(200)

… obtenemos:

$ python test.py
[1, 2, 4, 8, 16, 32, 64]
[1, 2, 4, 8, 16, 32, 64, 128]

También podemos importar funciones concretas de un módulo:

>>> from fibo import print_fib

… o todas:

>>> from fibo import *

… en cuyo caso no se referencian mediante el nombre del módulo sino por su propio nombre:

>>> print_fib(200)
[1, 2, 4, 8, 16, 32, 64, 128]

Nota

En general es preferible import fibo que from fibo import *, ya que esto último da como resultado código menos legible y mayor probabilidad de conflictos de nombres.

Cuando se importa un módulo el intérprete busca el fichero en la lista de directorios dada por la variable sys.path, y en ese orden. El primer directorio de la lista (sys.path[0] = ”), es el directorio actual donde está ubicado el propio script:

>>> import sys
>>> sys.path
['', '/usr/lib/python2.6', '/var/lib/python-support/python2.6',
 '/usr/local/lib/python2.6/dist-packages']
>>> sys.path.append('/mi/nueva/ruta')
>>> sys.path
['', '/usr/lib/python2.6', '/var/lib/python-support/python2.6',
 '/usr/local/lib/python2.6/dist-packages', '/mi/nueva/ruta']

La función dir() enumera la lista de nombres definidos actualmente (todo tipo de nombres: variables, módulos, funciones, etc.):

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> import fibo
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'fibo']
>>> dir(fibo)
['__builtins__', '__doc__', '__file__', '__name__', '__package__',
 'fib', 'print_fib']

Los nombres de las funciones y variables internas están definidos en el módulo estándar __builtin__:

>>> import __builtin__
>>> dir(__builtin__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis',
...
 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum',
 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']

Módulos interesantes

Módulos interesantes
Tema Módulo
Interfaces gráficas pyGtk
pyQT
PyKDE
Pmw
Tkinter 3000
Tix
Bases de datos MySQL-Python
Gadfly
psycopg
kinterbasdb
cx_Oracle
pySQLite
MSN Messenger msnlib
msnp
Imágenes PIL
gdmodule
VideoCapture
Ciencias scipy
NumPy
matplotlib
Vídeo-juegos Pygame
pyOpenGL
Jabber jabberpy
Web scrape
pythonweb
mechanize
Feed Parser
Geo-localización geoname.py
Puerto serie pySerial
USPP
Puerto paralelo pyParallel
Puerto USB pyUSB
Windows ctypes
pywin32
pywinauto
pyrtf
wmi
PDA/GSM/Móviles pymo
pyS60
Sonido pySonic
pyMedia
FMOD
pyMIDI
GMail libgmail
Google pyGoogle
Expect pyExpect
WordNet pyWordNet

Recursos

  • Python Package Index: PyPI

Artículos en la categoría "Manual de Python"

  1. Manual de Python: Cadenas
  2. Manual de Python: Listas
  3. Manual de Python: Diccionarios
  4. Manual de Python: Estructuras de control
  5. Manual de Python: Funciones
  6. Manual de Python: Módulos
  7. Manual de Python: Objetos
  8. Manual de Python: Lectura y escritura de ficheros