Python – Capítulo 28: Introducción a la librería estándar

Una de las razones que me animaron a estudiar Python, además de la elegancia del lenguaje en sí, fue que incluía una tremenda cantidad de funcionalidad extra que me permitía acometer casi cualquier tipo de proyecto de programación sin necesidad de recurrir a librerías de terceros.

Seguro que has leído alguna vez eso de que Python se distribuye “con pilas incluidas”. La expresión hace mención a su famosa librería estándar, una gran colección de módulos repletos de código listos para que hagas uso de ellos.

En el capítulo de hoy mostraremos cómo utilizar la librería estándar a través de un par ejemplos sencillos.

Imagina que queremos hacer un programa que simule la tirada de un dado. Necesitaremos algún tipo de código que sea capaz de generarnos un número aleatorio entre 1 y 6. Dentro de las funciones built-in de Python no existe nada parecido. Sin embargo, en algún lugar de tu disco duro hay un fichero, random.py, que te va a sacar del atolladero.

Ese fichero, como todos los que terminan en .py, constituyen lo que se denomina un módulo. Los programas que tú escribes son también módulos en sí mismos. La diferencia es que random.py es un módulo de la librería de Python. Más que programas típicos que se ejecutan y provocan una salida concreta, lo que un módulo de la librería almacena es un conjunto de variables, funciones, clases (con sus respectivos atributos y métodos) que tú vas a poder incorporar después a tus propios programas.

El primer paso para hacer esto es lo que se conoce como importar el módulo. Para que te hagas una idea, eso es casi como si hubieras copiado el código del módulo de la librería y lo hubieras pegado junto al tuyo.

Esto se realiza con la instrucción:

import random

Observa que no necesito poner la extensión, basta con el nombre del módulo.

Por curiosidad, abre el fichero random.py con un editor de texto y observa su contenido. Cientos de líneas especializadas en la gestión de números aleatorios a tu entera disposición. Entre el amplio conjunto de funciones, existe una, randint(), que es capaz de generarnos un entero aleatorio entre dos valores, ambos inclusive, que indiquemos como parámetros.

Carga IDLE o el intérprete interactivo, que vamos a hacer unas pruebas.

Comenzamos importando el módulo random:

>>> import random

Con el módulo importado, permítete echar un vistazo a la ayuda que trae:

>>> help(random)

Puedes entretenerte un rato leyéndola si te apetece…

Vamos a intentar invocar la función randint():

>>> randint(1,6)
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    randint(1,6)
NameError: name 'randint' is not defined

¿Cómo que no está definida? ¿No habíamos dicho que al importar el módulo teníamos a nuestra disposición todas sus funciones?

Así es. Lo que ha fallado ha sido la forma en la que hemos invocado a randint(). El modo correcto de hacerlo es precediendo el nombre de la función por el nombre del módulo al que pertenece, separados por un punto.

>>> random.randint(1,6)
4

Decimos que randint() pertenece a un espacio de nombres diferente al que usamos en nuestro programa principal. En la invocación hay que indicar que randint() está asociada al espacio de nombres random (igual que el nombre del módulo).

De hecho, podríamos tener una propia función randint() en nuestro código y no entraría en conflicto con la de random:

>>> def randint():
  print('hola')

>>> randint()
hola
>>> random.randint(1,6)
3

Veamos un segundo ejemplo:

En la librería estándar, existe un módulo especializado en el tratamiento de fechas: datetime.

Pues bien, entre lo mucho que tiene datetime nos ofrece una clase especial de objeto: date, con todos sus atributos y métodos. Uno de ellos es el método today(), que nos devuelve la fecha actual. Veámoslo en acción:

>>> import datetime
>>> print(datetime.date.today())
2012-01-24

El primer punto separa el espacio de nombres del nombre de la clase. El segundo separa la clase del método.

En próximas entregas veremos cómo crear nuestros propios módulos para ir ampliando nuestra librería personal. Entre tanto, intenta averiguar más cosas que la librería estándar de Python puede hacer por ti.

Javier Montero Gabarró


Python – Capítulo 28: Introducción a la librería estándar


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

4 opiniones en “Python – Capítulo 28: Introducción a la librería estándar”

  1. En ubuntu, random.py se encuentra en …usr/lib/versionpython en mi caso la versión de python que utilizo es python3.2. Por si alguien le quiere echar un vistazo.
    Saludos

Deja un comentario