You are on page 1of 59

Modulos

Introduccion a PYTHON
Cesar Husillos & Vctor Terron
IAA-CSIC

Abril de 2014
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

1 / 59

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

2 / 59

Overview

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

3 / 59

Overview

Modulos
Overview: Que son?

Un modulo es un fichero que contiene codigo PYTHON.


Su extension es .py.
Almacena declaracion de variables e implementacion de
funciones.
Posibilidad de hacer referencia a otros m
odulos (mediante
la instruccion import).

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

4 / 59

Overview

Modulos
Overview: Para que sirven?

La funcion principal es organizar el codigo.


Como resultado:
1
Nuestra mama se sentira orgullosa de nosotros
(Que lmpi@ y ordenad@ es mi nin@! )
2
Sera mucho mas sencillo reutilizar nuestro codigo.
Podremos publicar nuestro codigo para que lo use
cualquiera!!

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

5 / 59

Overview

Modulos
Overview: Ejemplo de modulo (areas.py)

""" Modulo para el calculo de areas de formas basicas """


pi = 3.1416

def cuadrado ( lado ):


""" Calcula el area del c u a d r a d o a partir de su lado """

return lado ** 2
def circulo ( radio ):

""" Calcula el area del circulo dado el radio """

return pi * radio ** 2

print Area cuadrado = , cuadrado (2)


print Area circulo = , circulo (1)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

6 / 59

Overview

Modulos
Overview: C
omo se usan?

Pueden ser ejecutados desde consola


python areas.py
Pueden ser llamados por otros modulos o desde la
consola de PYTHON, mediante la instruccion
import areas
En la importacion, se escribe el nombre del fichero
sin el .py.
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

7 / 59

Overview

Modulos
Overview: C
omo se usan?

Se obtiene informacion sobre el contenido del


modulo mediante la instruccion
help(areas)
Se accede a su contenido con la sintaxis
nombreModulo.variable o
nombreModulo.funcion
print areas.pi; print areas.cuadrado(3)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

8 / 59

Organizaci
on

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

9 / 59

Organizaci
on

Modulos
Organizaci
on del c
odigo

Todo empieza por programas simples (unas pocas


lneas, como mucho).
A medida que se aprende sobre PYTHON, la
complejidad de los programas aumenta.
El numero de lneas pasa de decenas a cientos, y el
programa se vuelve difcil de revisar.
El problema se magnifica si usamos el programa de
otra persona o si el desarrollo se realiza entre varias.
La gente lleva mucho tiempo programando y este
problema no es nuevo. Como se resuelve?
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

10 / 59

Organizaci
on

Modulos
Organizaci
on del c
odigo (II)

La tendencia normal es la de dividir el codigo


complejo en partes (funciones o modulos).

Estas
piezas o fragmentos de codigo se gestionan de
forma independiente (programacion, pruebas,
mejoras,...) y luego se juntan en programas mas
complejos.
Esto mismo es lo que aprenderemos en esta parte del
curso de PYTHON.
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

11 / 59

Reutilizaci
on

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

12 / 59

Reutilizaci
on

Modulos
Reutilizaci
on

En nuestro trabajo diario, nuestras tareas se centran


en temas concretos.
Desarrollamos codigo para resolver un problema.
Se plantea otro diferente y nos damos cuenta de
que nuestro programa se parece a parte de otro que
ya hemos hecho antes.
Trabajamos 2 veces?
Si colocamos nuestro codigo en modulos, podemos
1
Aprovechar lo que ya esta hecho (no reinventar la
rueda).
2
Saber que lo que usamos funciona (ya probado).
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

13 / 59

Reutilizaci
on

Modulos
Cuanto hay desarrollado?

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

14 / 59

C
omo se crean los m
odulos?

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

15 / 59

C
omo se crean los m
odulos?

Modulos
Proceso de generaci
on y uso

1
2
3

Creacion.
Implementacion.
Almacenamiento.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

16 / 59

C
omo se crean los m
odulos?

Modulos
1. Creaci
on

Un modulo es un fichero con extension .py.


Basta con generar un fichero para tener un modulo

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

17 / 59

C
omo se crean los m
odulos?

Modulos
2. Implementaci
on
1

Se escriben todas las definiciones de funciones,


clases, ... y el codigo ejecutable (asignaciones
bucles, prints, llamadas a funciones,...).
El codigo ejecutable puede servir:
Para inicializar las variables que se usaran en el codigo
(tanto del modulo como de un programa diferente).
Para realizar tareas concretas (leer ficheros, procesar
listas, actualizar una base de datos, descargar vdeos de
canales de Youtube,...).
Para ejecutar rutinas de testeo del modulo (necesarias
para comprobar que nuestras funciones realizan su tarea
correctamente).

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

18 / 59

C
omo se crean los m
odulos?

Modulos
3. Almacenamiento

Se refiere a la ruta, dentro del directorio de


ficheros, en la que almacenamos nuestro modulo.
Veremos que esta ruta es determinante para hacer
accesible nuestro modulo a otros programas que
pretendan reutilizarlo (variable PYTHONPATH).

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

19 / 59

C
omo se usan los m
odulos?

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

20 / 59

C
omo se usan los m
odulos?

Modulos
Utilizaci
on

Nuestro modulo ya esta creado.


1
Para poder usar las funciones y variables que declara
debemos importarlo. La instruccion basica es
import nombre_modulo
2

Para llamar a las variables y funciones del modulo


importado en nuestro nuevo codigo, ejecutaremos
instrucciones como

nombre_modulo . variable
nombre_modulo . funcion ([ parametro1 , parametro2 ,...])

donde variable y funcion, se sustituyen por


aquellos nombres que estan declarados en el modulo.
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

21 / 59

C
omo se usan los m
odulos?

Modulos
Otras instrucciones de importaci
on (I)

Importamos todo el m
odulo a nuestro espacio de trabajo con la instrucci
on

from nombre_modulo import *


Ya no es necesario escribir nombre modulo.funcion([parametros]). Ahora basta con
funci
on([parametros]).
Puedo importar s
olo ciertas partes de m
odulo (ya sean funciones o variables).

from nombre_modulo import variable


from nombre_modulo import funcion
De nuevo, puedo hacer uso de lo importado simplemente escribiendo variable o
funcion([parametros]) donde sea necesario en mi c
odigo.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

22 / 59

C
omo se usan los m
odulos?

Modulos
Otras instrucciones de importaci
on (II)

Puedo generar un alias para un m


odulo (si el nombre es demasiado largo o difcil de
escribir)

from n o m b r e _ m o d u l o _ d i f i c i l _ y _ l a r g o _ d e _ e s c r i b i r as modalias
Ahora puedo acceder al contenido del m
odulo como modalias.variable o
modalias.funcion([parametros]).
Finalmente, puedo poner alias a variables o funciones del m
odulo

from n o m b r e _ m o d u l o _ d i f i c i l _ y _ l a r g o import variable as varalias


Podr
e acceder a ese contenido escribiendo s
olo el alias varalias.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

23 / 59

C
omo se usan los m
odulos?

Modulos
Overview: Ejemplo de modulo (areas.py)

""" Modulo para el calculo de areas de formas basicas """


pi = 3.1416

def cuadrado ( lado ):


""" Calcula el area del c u a d r a d o a partir de su lado """

return lado ** 2
def circulo ( radio ):

""" Calcula el area del circulo dado el radio """

return pi * radio ** 2

print Area cuadrado = , cuadrado (2)


print Area circulo = , circulo (1)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

24 / 59

C
omo se usan los m
odulos?

Modulos
Otras instrucciones de importaci
on: Ejemplo
>>> import areas
Area cuadrado = 4
Area circulo = 3.1416
>>> areas . pi
3.1416
>>> areas . cuadrado (3)
9
>>> from areas import *
>>> circulo (1)
3.1416
>>> pi
3.1416
>>> from areas import cuadrado
>>> cuadrado (4)
16
>>> import areas as a
>>> a . pi
3.1416
>>> from areas import circulo as ac
>>> ac (2)
Cesar12.5664
Husillos & Vctor Terr
on (IAA-CSIC)
M
odulos

Abril de 2014

25 / 59

C
omo se usan los m
odulos?

Modulos
Error de importaci
on

Si al importar el modulo obtengo un error


>>> import mimodulo
Traceback ( most recent call last ):
File " < pyshell #9 > " , line 1 , in < module >
import mimodulo
ImportError : No module named mimodulo

puede deberse a varias causas. Las mas comunes:


1
Ese modulo no existe
2
No he escrito bien su nombre.
3
El modulo no est
a en la ruta de b
usqueda de
m
odulos de Python.
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

26 / 59

C
omo se usan los m
odulos?

Modulos
Error de importaci
on

Si estamos seguros que de el modulo existe, pero da error


al importar, comprobaremos que el fichero del modulo
esta en la ruta de busqueda de modulos de Python.
Cual es la ruta de busqueda?

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

27 / 59

C
omo se usan los m
odulos?

Modulos
Ruta de b
usqueda de m
odulos

Por defecto, busca en el directorio actual.


Es el definido por aquel
desde el que ejecutamos el modulo en la consola del
sistema.
desde el directorio en el que hemos abierto la consola de
PYTHON.

Si no lo encuentra, busca en los directorios


contenidos en la variable de entorno
PYTHONPATH.
Si aun as no lo encuentra, busca en los directorios
de instalaci
on de PYTHON.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

28 / 59

C
omo se usan los m
odulos?

Modulos
Obtener rutas de m
odulos en el sistema

Podemos ver las rutas de busqueda de dos formas:


Variable de entorno del sistema: PYTHONPATH
(Desde una consola del sistema)

echo $PYTHONPATH

Ojeando la variable path del modulo sys.


(Ejecutando un fichero con c
odigo PYTHON o usando una consola de PYTHON)

import sys
print sys . path

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

29 / 59

C
omo se usan los m
odulos?

Modulos
Modificar rutas de m
odulos en el sistema

Si no esta el modulo en todas las posibles rutas de


busqueda de PYTHON, Como soluciono el problema de
importacion?.
Opciones:
1
Modificando o creando la variable de entorno del
sistema operativo (PYTHONPATH). (Cambio de ruta
PERMANENTE)
2
Agregando una nueva ruta a la variable path del
modulo sys. (Cambio de ruta TEMPORAL)
3
Copiando nuestro modulo en una ruta ya registrada
por nuestra instalacion de PYTHON. (Cambio de
ruta PERMANENTE)
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

30 / 59

C
omo se usan los m
odulos?

Modulos
Modificaci
on de PYTHONPATH

LINUX
Int
erprete bash export
PYTHONPATH=$PYTHONPATH:ruta dir modulos
Int
erprete csh setenv PYTHONPATH
$PYTHONPATH:ruta dir modulos

WINDOWS
Inicio Boton derecho sobre Equipo opcion de
menu Propiedades pestana Opciones avanzadas
boton Variables de entorno ...
Buscar PYTHONPATH y, si no esta, boton Nueva...
Nombre de variable: PYTHONPATH
Valor de la variable: ruta dir modulos
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

31 / 59

C
omo se usan los m
odulos?

Modulos
Modificaci
on de PYTHONPATH (Windows)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

32 / 59

C
omo se usan los m
odulos?

Modulos
Modificaci
on de ruta de b
usqueda de PYTHON (usando el modulo sys)

>>> import sys


>>> sys . path
[,
/ usr / bin ,
/ usr / lib / python2 .7 ,
/ usr / lib / python2 .7/ plat - linux2 ,
/ usr / lib / python2 .7/ lib - tk ,
...
/ usr / lib / pymodules / python2 .7 ,
/ usr / lib / python2 .7/ dist - packages / IPython / extensions ]
>>> sys . path . append ( / home / cesar / ownCloud / codigo )
>>> sys . path [ -1]
/ home / cesar / ownCloud / codigo

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

33 / 59

Espacios de Nombres

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

34 / 59

Espacios de Nombres

Modulos
Ejemplo ilustrativo

cesar @portat il :~/ code$ python


Python 2.7.3 ( default , Mar 13 2014 , 11:03:55)
[ GCC 4.7.2] on linux2
Type " help " , " copyright " , " credits " or " license " for more information
>>> pi = 3.14152
>>> from areas import *
Area cuadrado = 4
Area circulo = 3.1416
>>> pi
3.1416

Algo raro?

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

35 / 59

Espacios de Nombres

Modulos
Ejemplo ilustrativo

Para los mas despistados...

Se ha sobreescrito el valor de la variable pi!

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

36 / 59

Espacios de Nombres

Modulos
Espacios de nombres (namespaces) I

Pese a que el numero de nombres que se pueden usar


para funciones y variables es infinito, un programador usa
unas pocas docenas. Los motivos principales:
1
No quiere nombres largos.
2
Quiere que el nombre se relacione semanticamente
con el resultado de la variable o la tarea asignada a
la funcion (resultado, suma, apellidos,
lee fichero,...).
3
Poco tiempo libre para leer libros que incrementen
su cultura (los manuales de programacion no
cuentan)
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

37 / 59

Espacios de Nombres

Modulos
Espacios de nombres (Namespaces) II

Los modulos funcionan como espacios de nombres ya que


permiten usar variables con el mismo nombre en el
codigo.
No siempre es as. Este mecanismo de espacio de nombre
se deshabilita cuando importamos en la forma
from nombre modulo import *

por lo que se recomienda la mas general


import nombre modulo

o aquellas que incluyen alias.


Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

38 / 59

Declaraci
on y Ejecuci
on

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

39 / 59

Declaraci
on y Ejecuci
on

Modulos
Separando implementaci
on y ejecuci
on

Siempre que cargamos un modulo, se ejecuta todo


su codigo.
1
2
3

Declaracion de variables
Implementacion de funciones
Instrucciones ejecutables (print, llamadas a
funciones,...)

Con un mnimo retoque, podemos hacer que solo se


ejecuten las lneas declarativas (puntos 1 y 2)
Para ello, necesitamos importar el modulo de la
librera estandar llamado sys.
Pondremos el codigo ejecutable como parte del
bloque if name == main :
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

40 / 59

Declaraci
on y Ejecuci
on

Modulos
Separando implementaci
on y ejecuci
on
areas2.py
""" Modulo para el calculo de areas de formas basicas """
pi = 3.1416

def cuadrado ( lado ):


""" Calcula el area del c u a d r a d o a partir de su lado """

return lado ** 2
def circulo ( radio ):

""" Calcula el area del circulo dado el radio """

return pi * radio ** 2

if __name__ == __main__ :
print Area cuadrado = , cuadrado (2)
print Area circulo = , circulo (1)
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

41 / 59

Declaraci
on y Ejecuci
on

Modulos
Separando implementaci
on y ejecuci
on

Importo el modulo desde consola PYTHON

cesar @portat il :~/ code$ python


Python 2.7.3 ( default , Mar 13 2014 , 11:03:55)
Type " help " , " copyright " , " credits " or " license " for more information
>>> import areas2
>>> dir ( areas2 )
[ __builtins__ , __doc__ , __file__ , __name__ , __package__ ,
circulo , cuadrado , pi ]

Ejecuto el modulo desde la consola del sistema


cesar @portat il :~/ code$ python areas2 . py
Area cuadrado = 4
Area circulo = 3.1416

Diferencias entre areas.py y areas2.py?


Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

42 / 59

Declaraci
on y Ejecuci
on

Modulos
Separando implementaci
on y ejecuci
on

Importando desde la consola PYTHON, el codigo que


llamaba a las funciones cuadrado y crculo ya no se
ejecuta! en areas2.py.
Ejecutando desde la consola del sistema, no hay
diferencia alguna.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

43 / 59

Paso de par
ametros al m
odulo

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

44 / 59

Paso de par
ametros al m
odulo

Modulos
Paso de parametros al script

Podemos ejecutar un modulo desde lnea de


comandos pasandole parametros.
python modulo.py argum1 argum2
Basta retocar mnimamente nuestro codigo,
importando el modulo sys, de la librera estandar.
Despues, hacemos uso de la lista argv, declarada
dentro de dicho modulo (sys.argv).

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

45 / 59

Paso de par
ametros al m
odulo

Modulos
Paso de parametros al script

parametros.py

import sys
if __name__ == __main__ :
print Numero de parametros = , len ( sys . argv )
for s in sys . argv :
print s , -> , type ( s )

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

46 / 59

Paso de par
ametros al m
odulo

Modulos
Paso de parametros al script

python parametros.py uno 2 3.0


Numero de parametros = 4
parametros . py -> < type str >
uno -> < type str >
2 -> < type str >
3.0 -> < type str >

El primer elemento de la lista (sys.argv[0])


contiene el nombre del script.
Todos los elementos de la lista sys.argv son
strings

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

47 / 59

Notas finales

Indice
1
2
3
4
5
6
7
8
9

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

Overview
Organizacion
Reutilizacion
Como se crean los modulos?
Como se usan los modulos?
Espacios de Nombres
Declaracion y Ejecucion
Paso de parametros al modulo
Notas finales

M
odulos

Abril de 2014

48 / 59

Notas finales

Modulos
Recarga de m
odulos

Cuando usamos un modulo desde consola PYTHON


podemos percatarnos de un error de programacion o
de una mejora.
Realizamos el cambio y volvemos a importar el
modulo. Los cambios se han cargado?.
1

Abrir consola

Importar e modulo areas.py

Editar el c
odigo: crear la funci
on triangulo(base, altura)

Comprobar si es accesible desde consola

Reimportar el m
odulo (Funciona?)

Recargar el m
odulo (Funciona?)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

49 / 59

Notas finales

Modulos
Recarga de m
odulos: Ejemplo

Que he hecho mal?


Cuando un modulo se importa una vez no se
importa de nuevo.
Para forzar el refrescodel modulo se usa la
instruccion
reload ( modulo )
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

50 / 59

Notas finales

Modulos
Fichero areas.pyc

Tras importar el fichero areas.py, se genera en el


mismo directorio un fichero llamado areas.pyc.
Que es?
Se trata de un fichero generado por PYTHON de
forma automatica al importar un modulo.
Es un codigo precompilado que acelera la carga del
modulo.
Puede borrarse sin problema. Al importar, se genera
de nuevo.
Cuando se modifica el modulo, al importarlo de
nuevo se genera una nueva version de .pyc.
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

51 / 59

Notas finales

Modulos
Contenido de un m
odulo

La mayora de las veces vamos a usar un modulo


que nos hallamos descargado o uno que hemos
creado hace muuuucho tiempo.
Puedo refrescar el contenido del modulo mirando
la documentacion que el desarrollador ha generado
(PDF, HTML,...)
Si el desarrollador soy yo, probablemente no haya
creado documentos (/). En este caso, puedo
Mirar el codigo fuente del modulo
Usar funciones de PYTHON (dir, help)
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

52 / 59

Notas finales

Modulos
Funciones de documentaci
on

Funcion dir()
Sin argumentos, devuelve los nombres de variables y
funciones disponibles en la sesion.
Con argumentos (el nombre de un modulo, p.e.),
devuelve las variables disponibles para ese
argumento.
>>> dir ( areas )
[ __builtins__ , __doc__ , __file__ , __name__ ,
__package__ , circulo , cuadrado , pi ]

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

53 / 59

Notas finales

Modulos
Funciones de documentaci
on

>>> areas . __doc__


Modulo para el calculo de areas de formas basicas
>>> areas . __file__
areas . py
>>> areas . __name__
areas
>>> areas . __package__

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

54 / 59

Notas finales

Modulos
Funciones de documentaci
on

La funcion help() permite obtener la


documentacion del argumento que se le pase.
Si no hay argumentos, abre un entorno de ayuda,
donde se puede consultar sobre PYTHON
>>> help()
Welcome to Python 2.7!

This is the online help utility.

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/2.7/tutorial/.
...
>>> help(areas.circulo)
Help on function circulo in module areas:
circulo(radio)
Calcula el area del circulo dado el radio
(END)
Cesar Husillos & Vctor Terr
on (IAA-CSIC)

M
odulos

Abril de 2014

55 / 59

Notas finales

Modulos
Formas de reutilizaci
on de c
odigo PYTHON (I)

Posibilidades:
1
Abro el modulo, copio todo su contenido al
portapapeles y lo pego en mi nuevo programa.
2
Cargo en mi fichero todo el modulo
import modulo
3

Carga selectiva de cierto contenido del modulo.

from modulo import a l g o Q u e E s t a D e f i n i d o E n E l M o d u l o

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

56 / 59

Notas finales

Modulos
Formas de reutilizaci
on de c
odigo PYTHON (II)

Abro el modulo, copio todo su contenido al


portapapeles y lo pego en mi nuevo programa.
Ventajas:
1

Es un procedimiento sencillo esto del cortar y pegar.

Inconvenientes:
1

Puedo equivocarme al copiar por fallar al seleccionar lo que quiero, o por no incluirlo
todo (dichoso rat
on!!!).

Mis programas siguen siendo enormes (muchas lneas).

Puedo sobrescribir variables que uso en el nuevo c


odigo.

No puedo hacer un seguimiento de las modificaciones u


tiles que realizo (En
qu
e fichero hice aquellos cambios?)

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

57 / 59

Notas finales

Modulos
Formas de reutilizaci
on de c
odigo PYTHON (III)

Cargo en mi fichero todo el contenido del modulo


mediante el uso de la instruccion import.
Ventajas:
1

No tengo que conocer con relativa profundidad el m


odulo.

Lo importa TODO.

Sintaxis sencilla.

Inconvenientes:
1

Lo importa TODO.

Puede que el m
odulo ocupe mucho. Mi programa pesa m
as (en KB). Efecto
creciente a medida que importe m
as y m
as m
odulos.

Puede que los nombres de variables dentro de los m


odulos sean muy largos
modulo.clase.nombrevariable

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

58 / 59

Notas finales

Modulos
Formas de reutilizaci
on de c
odigo PYTHON (IV)

Cargo parcialmente los contenidos de aquellos modulos


que me interesan para mi programa. Hago uso de la
instruccion
from modulo import variable|funci
on.
Ventajas:
1

Programas
optimos a nivel de tama
no y simplicidad.

Simplificaci
on de los nombres de variables y m
etodos. Se accede a ellos mediante la
llamada a variable o funci
on.

Inconvenientes:
1

Conocimiento avanzado del contenido de los m


odulos.

M
ultiples sentencias de importaci
on. Conocimiento avanzado del contenido de los
m
odulos.

M
ultiples sentencias de importaci
on.

Posibilidad de colisi
on de nombres.

Cesar Husillos & Vctor Terr


on (IAA-CSIC)

M
odulos

Abril de 2014

59 / 59

You might also like