Bibliotecas
Resumen
Enseñando: 10 min
Ejercicios: 10 minPreguntas
¿Cómo puedo usar el software que otras personas han escrito?
¿Cómo puedo saber qué hace dicho software?
Objectivos
Explicar qué son las bibliotecas de software, y por qué los programadores las crean y usan.
Escribir programas que importen y usen bibliotecas de la biblioteca estándar de Python.
Encontrar y leer la documentación de las bibliotecas estándar de forma interactiva (en el intérprete) y en línea.
Gran parte del poder de un lenguaje de programación está en sus bibliotecas.
- Una biblioteca es una colección de archivos (llamados módulos) que contienen funciones para ser usadas por otros programas.
- Pueden también contener datos (e.g. constantes numéricas) y otras cosas.
- Los contenidos de una biblioteca deberían estar relacionados, pero no hay una forma establecida para imponer esto.
- La biblioteca estándar de Python es una colección extensa de módulos que vienen con Python mismo.
- Muchas bibliotecas adicionales están disponibles en PyPI (el índice de paquetes de Python).
- Más tarde veremos cómo escribir nuevas bibliotecas.
Bibliotecas y módulos
Una biblioteca es una colección de módulos, pero los términos a menudo se usan indistintamente, especialmente porque muchas bibliotecas consisten de un solo módulo, entonces no te preocupes si las mezclas.
Un programa debe importar un módulo de biblioteca antes de usarlo.
- Usa
import
para cargar un módulo de una biblioteca en la memoria del programa. - Después refiérete a las cosas del módulo como
nombre_del_modulo.nombre_de_la_cosa
. - Python usa
.
para referirse a “parte de”. - Usando
math
, uno de los módulos de la biblioteca estándar:
import math
print('pi es', math.pi)
print('cos(pi) es', math.cos(math.pi))
pi es 3.141592653589793
cos(pi) es -1.0
- Debemos referirnos a cada elemento con el nombre del módulo.
math.cos(pi)
no funcionará: la referencia api
no “hereda” de alguna forma la referencia que está haciendo la función amath
Usa help
para aprender sobre los contenidos del módulo de una biblioteca.
- Funciona tal y como la ayuda para una función.
help(math)
Help on module math:
NAME
math
MODULE REFERENCE
http://docs.python.org/3/library/math
La documentación que sigue fue automáticamente generada desde los archivos fuente
de Python (los cuales están escritos en inglés). Puede estar incompleta, ser incorrecta o incluir características que son
consideradas detalles de la implementación y que pueden variar entre implementaciones
de Python. Cuando tengas dudas, consulta la referencia al módulo en la
dirección que encuentras arriba.
DESCRIPTION
Este módulo siempre está disponible. Proporciona acceso a las
funciones matemáticas definidas por el estándar C.
FUNCTIONS
acos(x, /)
Devuelve el arco coseno (medido en radianes) de x
⋮ ⋮ ⋮
Importa elementos específicos del módulo de una biblioteca para acortar programas
- Usa
from ... import ...
para cargar solamente elementos específicos del módulo de una biblioteca. - Después refiérete a ellos directamente sin escribir el nombre de la biblioteca como prefijo.
from math import cos, pi
print('cos(pi) es', cos(pi))
cos(pi) es -1.0
Crea un alias para el módulo de una biblioteca al importarlo para acortar programas.
- Usa
import ... as ...
para asignarle a una biblioteca un alias más corto al importarla. - Después refiérete a los elementos de la biblioteca usando el nombre corto.
import math as m
print('cos(pi) es', m.cos(m.pi))
cos(pi) es -1.0
- Esto se suele hacer con las librerías que se usan frecuentemente o que tienen nombres largos.
- Por ejemplo, para la biblioteca de graficación
matplotlib
se suele usar el aliasmpl
. - Pero esto puede hacer que los programas sean más difíciles de entender, porque los lectores deberán aprender los alias de tu programa.
Explorando el módulo Math
- ¿Qué función del módulo
math
se puede usar para calcular la raíz cuadrada sin usarsqrt
?- Si la biblioteca contiene esta otra función, ¿por qué existe
sqrt
?Solución
Localizando el módulo correcto
Tú quieres seleccionar un caracter de una secuencia de caracteres al azar:
bases = 'ACTTGCTTGAC'
- ¿Cuál módulo de la biblioteca estándar podría ayudarte?
- ¿Qué función seleccionarías de ese módulo?, ¿tienes otras alternativas?
- Intenta escribir un programa que use esa función.
Solución
Ejemplo de programación con el rompecabezas (problema de Parson)
Reorganiza las siguientes declaraciones para imprimir una base de ADN al azar junto con su índice en la cadena. Puede que no todas las declaraciones sean necesarias. Puedes usar/añadir variables intermedias.
bases="ACTTGCTTGAC" import math import random ___ = random.randrange(n_bases) ___ = len(bases) print("base aleatoria", bases[___], "índice de la base", ___)
Solución
¿Cuándo está disponible la ayuda?
Cuando un colega tuyo escribe
help(math)
, Python reporta un error:NameError: name 'math' is not defined
¿Qué se le olvidó hacer a tu colega?
Solución
Importando con los alias.
- Rellena los espacios en blanco para que el programa que está abajo imprima
90.0
- Reescribe el programar para que use
import
sin elas
.- ¿Cuál de las dos formas te parece más fácil de leer?
import math as m angle = ____.degrees(____.pi / 2) print(____)
Solución
Hay muchas formas de importar bibliotecas!
Haz coincidir las siguientes declaraciones de impresión con las llamadas adecuadas a la biblioteca.
Comandos de print:
print("sin(pi/2) =", sin(pi/2))
print("sin(pi/2) =", m.sin(m.pi/2))
print("sin(pi/2) =", math.sin(math.pi/2))
Llamadas a la biblioteca:
from math import sin, pi
import math
import math as m
from math import *
Solución
Importando elementos específicos
- Rellena los espacios en blanco para que el programa de abajo imprima
90.0
- ¿Te parece que esta versión es más fácil de leer que las anteriores?
- Why wouldn’t programmers always use this form of
import
?- ¿Por qué los programadores no suelen usar siempre esta forma del
import
?____ math import ____, ____ angle = degrees(pi / 2) print(angle)
Solución
Leyendo mensajes de error
- Lee el código acá abajo e intenta identificar cuáles son los errores que tiene sin correrlo.
- Corre el código y lee el mensaje de error. ¿Qué tipo de error es?
from math import log log(0)
Solución
Puntos Clave
Gran parte del poder que puede tener un lenguaje de programación está en sus bibliotecas.
Un programa debe importar los módulos de una biblioteca para poder usarlos.
Usa
help
para aprender sobre los contenidos de un módulo de la biblioteca.Importa elementos específicos de una biblioteca para acortar programas.
Crea un alias para una biblioteca al importarla para acortar programas.