Módulos — Programación (2024)

Un módulo (o biblioteca) es una colección de definicionesde variables, funciones y tipos (entre otras cosas)que pueden ser importadas para ser usadas desde cualquier programa.

Ya hemos visto algunos ejemplos de cómo usar módulos,particularmente el módulo matemático,del que podemos importar funcionescomo la exponencial y el coseno,y las constantes π y e:

>>> from math import exp, cos>>> from math import pi, e>>> print cos(pi / 3)0.5

Las ventajas de usar módulos son:

  • las funciones y variables deben ser definidas sólo una vez,y luego pueden ser utilizadas en muchos programassin necesidad de reescribir el código;
  • permiten que un programa pueda ser organizado en varias secciones lógicas,puestas cada una en un archivo separado;
  • hacen más fácil compartir componentes con otros programadores.

Python viene «de fábrica» con muchos módulos listos para ser usados.Además, es posible descargar de internet e instalar módulosprácticamente para hacer cualquier cosa.Por último, aprenderemos a crear nuestros propios módulos.

Módulos presentes en Python

Éstos son algunos de los módulos estándares de Python,que pueden ser usado desde cualquier programa.

El módulo math contiene funciones y constantes matemáticas:

>>> from math import floor, radians>>> floor(-5.9)-6.0>>> radians(180)3.1415926535897931

El módulo random contiene funciones para producir números aleatorios(es decir, al azar):

>>> from random import choice, randrange,>>> choice(['cara', 'sello'])'cara'>>> choice(['cara', 'sello'])'sello'>>> choice(['cara', 'sello'])'sello'>>> randrange(10)7>>> randrange(10)2>>> randrange(10)5>>> r = range(5)>>> r[0, 1, 2, 3, 4]>>> shuffle(r)>>> r[4, 2, 0, 3, 1]

El módulo datetime provee tipos de datospara manipular fechas y horas:

>>> from datetime import date>>> hoy = date(2011, 5, 31)>>> fin_del_mundo = date(2012, 12, 21)>>> (fin_del_mundo - hoy).days570

El módulo fractions provee un tipo de datospara representar números racionales:

>>> from fractions import Fraction>>> a = Fraction(5, 12)>>> b = Fraction(9, 7)>>> a + bFraction(143, 84)

El módulo turtle permite manejar una tortuga(¡haga la prueba!):

>>> from turtle import Turtle>>> t = Turtle()>>> t.forward(10)>>> t.left(45)>>> t.forward(20)>>> t.left(45)>>> t.forward(30)>>> for i in range(10):... t.right(30)... t.forward(10 * i)...>>>

La lista completa de módulos de Pythonpuede ser encontrada en la documentación de la biblioteca estándar.

Importación de nombres

La sentencia import importa objetos desde un módulopara poder ser usados en el programa actual.

Una manera de usar import es importar sólo los nombres específicosque uno desea utilizar en el programa:

from math import sin, cosprint sin(10)print cos(20)

En este caso, las funciones sin y cos no fueron creadas por nosotros,sino importadas del módulo de matemáticas, donde están definidas.

La otra manera de usar import es importando el módulo completo,y accediendo a sus objetos mediante un punto:

import mathprint math.sin(10)print math.cos(10)

Las dos formas son equivalentes.Como siempre, hay que optar por la que hace que el programasea más fácil de entender.

Creación de módulos

Un módulo sencillo es simplemente un archivo con código en Python.El nombre del archivo indica cuál es el nombre del módulo.

Por ejemplo, podemos crear un archivo llamado pares.pyque tenga funciones relacionadas con los números pares:

def es_par(n): return n % 2 == 0def es_impar(n): return not es_par(n)def pares_hasta(n): return range(0, n, 2)

En este caso, el nombre del módulo es pares.Para poder usar estas funciones desde otro programa,el archivo pares.py debe estar en la misma carpetaque el programa.

Por ejemplo,el programa mostrar_pares.pypuede ser escrito así:

from pares import pares_hastan = int(raw_input('Ingrese un entero: '))print 'Los numeros pares hasta', n, 'son:'for i in pares_hasta(n): print i

Y el programa ver_si_es_par.pypuede ser escrito así:

import paresn = int(raw_input('Ingrese un entero: '))if pares.es_par(n): print n, 'es par'else: print n, 'no es par'

Como se puede ver,ambos programas pueden usar los objetos definidos en el módulosimplemente importándolos.

Usar módulos como programas

Un archivo con extensión .py puede ser un módulo o un programa.Si es un módulo,contiene definiciones que pueden ser importadas desde un programa o desde otro módulo.Si es un programa,contiene código para ser ejecutado.

A veces, un programa también contiene definiciones(por ejemplo, funciones y variables)que también pueden ser útiles desde otro programa.Sin embargo, no pueden ser importadas,ya que al usar la sentencia importel programa completo sería ejecutado.Lo que ocurriría en este caso es que,al ejecutar el segundo programa,también se ejecutaría el primero.

Existe un truco para evitar este problema:siempre que hay código siendo ejecutado,existe una variable llamada __name__.Cuando se trata de un programa,el valor de esta variable es '__main__',mientras que en un módulo,es el nombre del módulo.

Por lo tanto,se puede usar el valor de esta variablepara marcar la parte del programaque debe ser ejecutada al ejecutar el archivo,pero no al importarlo.

Por ejemplo,el siguiente programa convierteunidades de medidas de longitud:

Este programa es útil por sí solo,pero además sus cuatro funcionesy las constantes km_por_milla y cm_por_pulgadapodrían ser útiles para ser usadas en otro programa.

Al poner el cuerpo del programadentro del if __name__ == '__main__',el archivo puede ser usado como un módulo.Si no hiciéramos esto,cada vez que otro programa importe una funciónse ejecutaría el programa completo.

Haga la prueba: descargue el programa y ejecútelo.Luego, escriba otro programa que importe alguna de las funciones.A continuación, haga lo mismo,pero eliminando el if.

Módulos — Programación (2024)
Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated:

Views: 6270

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.