Introducción a PYTHON. Cesar Husillos & Víctor Terrón. Abril de 2014



Documentos relacionados
Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Publicar aplicaciones

Curso de Python Inicial

Acronis License Server. Guía del usuario

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Ejercicios - Persistencia en Android: ficheros y SQLite

10. El entorno de publicación web (Publiweb)

Gestión de Retales WhitePaper Noviembre de 2009

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

Presentaciones compartidas con Google Docs (tutorial)

Tutorial: Primeros Pasos con Subversion

Curso de PHP con MySQL Gratis

Correo Electrónico: Webmail: Horde 3.1.1

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Software distribuido

ACTIVE DIRECTORY - PROPIEDADES DE USUARIO

Notas para la instalación de un lector de tarjetas inteligentes.

Capítulo 9. Archivos de sintaxis

Administrar El Usuario Mediante Windows NT

INYECCIóN DE CóDIGO EN APLICACIONES PHP. Autor: Iñaki Rodriguez (2005)

Guía Práctica para el Uso del Servicio de Software Zoho CRM

La página web del centro con SPIP

Actualización del Cliente IFI

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

La ventana de Microsoft Excel

Obtener certificado de antecedentes penales online

Manual del panel. Core-Admin

Administración de portales Joomla (III)

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario

Internet Information Server

Grupos públicos y grupos identificados

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Entorno de Desarrollo - 1 -

TPV Táctil. Configuración y Uso. Rev /01/09

Migrar una organización Microsoft Exchange 2003 a Microsoft Exchange 2007

Creación y administración de grupos de dominio

Introducción a los sitios de SharePoint en Office 365

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

Shell de Unix ProgPLN

TUTORIAL SOBRE CÓMO CREAR Y GESTIONAR UN BLOG CON BLOGGER

PowerPoint 2010 Manejo de archivos

Utilización del sistema operativo GNU/ Linux en las netbooks

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

PLANTILLAS EN MICROSOFT WORD

MANUAL COPIAS DE SEGURIDAD

Visor de presupuestos en Android

Una plantilla es un documento de Word 2003 con la característica de que el tipo de documento es plantilla de documento (.dot).

Instantáneas o Shadow Copy

PLANTILLAS DE DOCUMENTOS EN WORD 2007

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Manual del programador

Estructuras de Datos y Algoritmos Tecnólogo en Informática

Kiara Celeste Contreras Feliz. Matricula: Sistema Operativo III. 5- Creación de usuarios y grupos

2_trabajar con calc I

Tools. Ibermática Soluciones Empresariales 2012, Todos los derechos reservados

7zip es un programa de carácter libre y gratuito, que permite tanto comprimir como descomprimir archivos, con una alta capacidad de comprensión.

Introducción a PHP. * No es necesario declarar previamente las variables.

Uso de Visual C++ Pre-Practica No. 3

Manual básico de Outlook Express

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD

TRUE CRYPT ::: Encriptación de datos :::

Práctica 3: Utilización de Charts dobles, Waveforms Graphs, propiedades de gráficos, creación de Waveforms y su almacenamiento en disco.

Exportación e Importación horarios XML

SMS Gestión. manual de uso

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1

RPC sobre HTTPS

Desarrollo Web en Entorno Servidor

Instalación de ActivePerl en MS Windows

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Guí a Ra pida Dropbox.

Introducción a Netbeans

Plantillas Office. Manual de usuario Versión 1.1

Cómo mover y cambiar de tamaño zonas (versión turborresumida, ya llegará la versión completa en el

CREAR UN REPOSITORIO DE ALMACENAMIENTO NFS PARA XEN SERVER O VMWARE SOBRE WINDOWS SERVER 2003 R2

Servicio Webmail. La fibra no tiene competencia

Guía de inicio rápido a

Crear la base de datos antes de la instalación de Wordpress.

Estimado usuario. Tabla de Contenidos

Capítulo 3 Usando GUIDE. 3.1 Acerca de GUIDE

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

efactura Online La fibra no tiene competencia

KIG: LA GEOMETRÍA A GOLPE DE RATÓN. Asesor de Tecnologías de la Información y de las Comunicaciones

Centro de Capacitación en Informática

- Descarga en un PC la utilidad de la BD, - En el programa IOrestaurant :

LiLa Portal Guía para profesores

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

02 Búsqueda, selección y evaluación de proveedores

Capítulo 1 Documentos HTML5

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

Transcripción:

Introducción a PYTHON Cesar Husillos & Víctor Terrón IAA-CSIC Abril de 2014 Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 1 / 59

Índice 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 2 / 59

Índice Overview 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 3 / 59

Overview: Qué son? Overview Un módulo es un fichero que contiene codigo PYTHON. Su extensión es.py. Almacena declaración de variables e implementación de funciones. Posibilidad de hacer referencia a otros módulos (mediante la instrucción import). Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 4 / 59

Overview: Para qué sirven? Overview La función principal es organizar el código. Como resultado: 1 Nuestra mamá se sentirá orgullosa de nosotros ( Qué ĺımpi@ y ordenad@ es mi niñ@! ) 2 Será mucho mas sencillo reutilizar nuestro código. Podremos publicar nuestro código para que lo use cualquiera!! Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 5 / 59

Overview 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 cuadrado 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 6 / 59

Overview: Cómo se usan? Overview Pueden ser ejecutados desde consola python areas.py Pueden ser llamados por otros módulos o desde la consola de PYTHON, mediante la instrucción import areas En la importación, se escribe el nombre del fichero sin el.py. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 7 / 59

Overview: Cómo se usan? Overview Se obtiene información sobre el contenido del módulo mediante la instrucción help(areas) Se accede a su contenido con la sintaxis nombremodulo.variable o nombremodulo.funcion print areas.pi; print areas.cuadrado(3) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 8 / 59

Índice Organización 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 9 / 59

Organización del código Organización Todo empieza por programas simples (unas pocas ĺıneas, como mucho). A medida que se aprende sobre PYTHON, la complejidad de los programas aumenta. El número de ĺıneas pasa de decenas a cientos, y el programa se vuelve difícil 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. Cómo se resuelve? Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 10 / 59

Organización del código (II) Organización La tendencia normal es la de dividir el código complejo en partes (funciones o módulos). Éstas piezas o fragmentos de código se gestionan de forma independiente (programación, pruebas, mejoras,...) y luego se juntan en programas más complejos. Esto mismo es lo que aprenderemos en esta parte del curso de PYTHON. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 11 / 59

Índice Reutilización 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 12 / 59

Reutilización Reutilización En nuestro trabajo diario, nuestras tareas se centran en temas concretos. Desarrollamos código 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 código en módulos, podemos 1 Aprovechar lo que ya está hecho (no reinventar la rueda). 2 Saber que lo que usamos funciona (ya probado). Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 13 / 59

Cuánto hay desarrollado? Reutilización Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 14 / 59

Índice Cómo se crean los módulos? 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 15 / 59

Proceso de generación y uso Cómo se crean los módulos? 1 Creación. 2 Implementación. 3 Almacenamiento. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 16 / 59

1. Creación Cómo se crean los módulos? Un módulo es un fichero con extensión.py. Basta con generar un fichero para tener un modulo Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 17 / 59

2. Implementación Cómo se crean los módulos? 1 Se escriben todas las definiciones de funciones, clases,... y el código ejecutable (asignaciones bucles, prints, llamadas a funciones,...). 2 El código ejecutable puede servir: Para inicializar las variables que se usarán en el código (tanto del módulo como de un programa diferente). Para realizar tareas concretas (leer ficheros, procesar listas, actualizar una base de datos, descargar vídeos de canales de Youtube,...). Para ejecutar rutinas de testeo del módulo (necesarias para comprobar que nuestras funciones realizan su tarea correctamente). Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 18 / 59

3. Almacenamiento Cómo se crean los módulos? Se refiere a la ruta, dentro del directorio de ficheros, en la que almacenamos nuestro módulo. Veremos que esta ruta es determinante para hacer accesible nuestro módulo a otros programas que pretendan reutilizarlo (variable PYTHONPATH). Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 19 / 59

Índice Cómo se usan los módulos? 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 20 / 59

Utilización Cómo se usan los módulos? Nuestro módulo ya está creado. 1 Para poder usar las funciones y variables que declara debemos importarlo. La instrucción básica es import nombre_modulo 2 Para llamar a las variables y funciones del módulo importado en nuestro nuevo código, ejecutaremos instrucciones como nombre_modulo. variable nombre_modulo. funcion ([ parametro1, parametro2,...]) donde variable y funcion, se sustituyen por aquellos nombres que están declarados en el módulo. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 21 / 59

Cómo se usan los módulos? Otras instrucciones de importación (I) Importamos todo el módulo a nuestro espacio de trabajo con la instrucción from nombre_modulo import * Ya no es necesario escribir nombre modulo.funcion([parametros]). Ahora basta con función([parametros]). Puedo importar sólo ciertas partes de módulo (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ódigo. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 22 / 59

Cómo se usan los módulos? Otras instrucciones de importación (II) Puedo generar un alias para un módulo (si el nombre es demasiado largo o difícil de escribir) from nombre_modulo_dificil_y_largo_de_escribir as modalias Ahora puedo acceder al contenido del módulo como modalias.variable o modalias.funcion([parametros]). Finalmente, puedo poner alias a variables o funciones del módulo from nombre_modulo_dificil_y_largo import variable as varalias Podré acceder a ese contenido escribiendo sólo el alias varalias. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 23 / 59

Cómo se usan los módulos? 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 cuadrado 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 24 / 59

Cómo se usan los módulos? Otras instrucciones de importación: 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 25 / 59

Error de importación Cómo se usan los módulos? Si al importar el módulo 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 más comunes: 1 Ese módulo no existe 2 No he escrito bien su nombre. 3 El módulo no está en la ruta de búsqueda de módulos de Python. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 26 / 59

Error de importación Cómo se usan los módulos? Si estamos seguros que de el módulo existe, pero da error al importar, comprobaremos que el fichero del módulo está en la ruta de búsqueda de módulos de Python. Cuál es la ruta de búsqueda? Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 27 / 59

Ruta de búsqueda de módulos Cómo se usan los módulos? 1 Por defecto, busca en el directorio actual. Es el definido por aquel desde el que ejecutamos el módulo en la consola del sistema. desde el directorio en el que hemos abierto la consola de PYTHON. 2 Si no lo encuentra, busca en los directorios contenidos en la variable de entorno PYTHONPATH. 3 Si aun así no lo encuentra, busca en los directorios de instalación de PYTHON. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 28 / 59

Cómo se usan los módulos? Obtener rutas de módulos en el sistema Podemos ver las rutas de búsqueda de dos formas: Variable de entorno del sistema: PYTHONPATH (Desde una consola del sistema) echo $PYTHONPATH Ojeando la variable path del módulo sys. (Ejecutando un fichero con código PYTHON o usando una consola de PYTHON) import sys print sys. path Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 29 / 59

Cómo se usan los módulos? Modificar rutas de módulos en el sistema Si no está el módulo en todas las posibles rutas de búsqueda de PYTHON, Cómo soluciono el problema de importación?. 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 módulo sys. (Cambio de ruta TEMPORAL) 3 Copiando nuestro módulo en una ruta ya registrada por nuestra instalación de PYTHON. (Cambio de ruta PERMANENTE) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 30 / 59

Modificación de PYTHONPATH Cómo se usan los módulos? LINUX Intérprete bash export PYTHONPATH=$PYTHONPATH:ruta dir modulos Intérprete csh setenv PYTHONPATH $PYTHONPATH:ruta dir modulos WINDOWS Inicio Botón derecho sobre Equipo opción de menú Propiedades pestaña Opciones avanzadas botón Variables de entorno... Buscar PYTHONPATH y, si no está, botón Nueva... Nombre de variable: PYTHONPATH Valor de la variable: ruta dir modulos Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 31 / 59

Cómo se usan los módulos? Modificación de PYTHONPATH (Windows) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 32 / 59

Cómo se usan los módulos? Modificación de ruta de búsqueda de PYTHON (usando el módulo 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 33 / 59

Índice Espacios de Nombres 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 34 / 59

Ejemplo ilustrativo Espacios de Nombres cesar@portatil :~/ 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 35 / 59

Ejemplo ilustrativo Espacios de Nombres Para los más despistados... Se ha sobreescrito el valor de la variable pi! Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 36 / 59

Espacios de Nombres Espacios de nombres (namespaces) I Pese a que el número 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 semánticamente con el resultado de la variable o la tarea asignada a la función (resultado, suma, apellidos, lee fichero,...). 3 Poco tiempo libre para leer libros que incrementen su cultura (los manuales de programación no cuentan) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 37 / 59

Espacios de Nombres Espacios de nombres (Namespaces) II Los módulos funcionan como espacios de nombres ya que permiten usar variables con el mismo nombre en el código. 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 más general import nombre modulo o aquellas que incluyen alias. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 38 / 59

Índice Declaración y Ejecución 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 39 / 59

Declaración y Ejecución Separando implementación y ejecución Siempre que cargamos un módulo, se ejecuta todo su código. 1 Declaración de variables 2 Implementación de funciones 3 Instrucciones ejecutables (print, llamadas a funciones,...) Con un mínimo retoque, podemos hacer que sólo se ejecuten las ĺıneas declarativas (puntos 1 y 2) Para ello, necesitamos importar el módulo de la librería estándar llamado sys. Pondremos el código ejecutable como parte del bloque if name == main : Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 40 / 59

Declaración y Ejecución Separando implementación y ejecución areas2.py """ Modulo para el calculo de areas de formas basicas """ pi = 3.1416 def cuadrado ( lado ): """ Calcula el area del cuadrado 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 41 / 59

Declaración y Ejecución Separando implementación y ejecución Importo el módulo desde consola PYTHON cesar@portatil :~/ 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 módulo desde la consola del sistema cesar@portatil :~/ code$ python areas2. py Area cuadrado = 4 Area circulo = 3.1416 Diferencias entre areas.py y areas2.py? Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 42 / 59

Declaración y Ejecución Separando implementación y ejecución Importando desde la consola PYTHON, el código que llamaba a las funciones cuadrado y círculo ya no se ejecuta! en areas2.py. Ejecutando desde la consola del sistema, no hay diferencia alguna. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 43 / 59

Índice Paso de parámetros al módulo 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 44 / 59

Paso de parámetros al script Paso de parámetros al módulo Podemos ejecutar un módulo desde ĺınea de comandos pasándole parámetros. python modulo.py argum1 argum2 Basta retocar mínimamente nuestro código, importando el módulo sys, de la librería estándar. Después, hacemos uso de la lista argv, declarada dentro de dicho módulo (sys.argv). Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 45 / 59

Paso de parámetros al script Paso de parámetros al módulo 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 46 / 59

Paso de parámetros al script Paso de parámetros al módulo 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 > 1 El primer elemento de la lista (sys.argv[0]) contiene el nombre del script. 2 Todos los elementos de la lista sys.argv son strings Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 47 / 59

Índice Notas finales 1 Overview 2 Organización 3 Reutilización 4 Cómo se crean los módulos? 5 Cómo se usan los módulos? 6 Espacios de Nombres 7 Declaración y Ejecución 8 Paso de parámetros al módulo 9 Notas finales Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 48 / 59

Recarga de módulos Notas finales Cuando usamos un módulo desde consola PYTHON podemos percatarnos de un error de programación o de una mejora. Realizamos el cambio y volvemos a importar el módulo. Los cambios se han cargado?. 1 Abrir consola 2 Importar e modulo areas.py 3 Editar el código: crear la función triangulo(base, altura) 4 Comprobar si es accesible desde consola 5 Reimportar el módulo ( Funciona?) 6 Recargar el módulo ( Funciona?) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 49 / 59

Recarga de módulos: Ejemplo Notas finales Qué he hecho mal? Cuando un módulo se importa una vez no se importa de nuevo. Para forzar el refresco del módulo se usa la instrucción reload ( modulo ) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 50 / 59

Fichero areas.pyc Notas finales Tras importar el fichero areas.py, se genera en el mismo directorio un fichero llamado areas.pyc. Qué es? Se trata de un fichero generado por PYTHON de forma automática al importar un módulo. Es un código precompilado que acelera la carga del módulo. Puede borrarse sin problema. Al importar, se genera de nuevo. Cuando se modifica el módulo, al importarlo de nuevo se genera una nueva versión de.pyc. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 51 / 59

Contenido de un módulo Notas finales La mayoría de las veces vamos a usar un módulo que nos hallamos descargado o uno que hemos creado hace muuuucho tiempo. Puedo refrescar el contenido del módulo mirando la documentación que el desarrollador ha generado (PDF, HTML,...) Si el desarrollador soy yo, probablemente no haya creado documentos ( ). En este caso, puedo Mirar el código fuente del módulo Usar funciones de PYTHON (dir, help) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 52 / 59

Funciones de documentación Notas finales Función dir() Sin argumentos, devuelve los nombres de variables y funciones disponibles en la sesión. Con argumentos (el nombre de un módulo, p.e.), devuelve las variables disponibles para ese argumento. >>> dir ( areas ) [ builtins, doc, file, name, package, circulo, cuadrado, pi ] Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 53 / 59

Funciones de documentación Notas finales >>> areas. doc Modulo para el calculo de areas de formas basicas >>> areas. file areas.py >>> areas. name areas >>> areas. package Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 54 / 59

Funciones de documentación Notas finales La función help() permite obtener la documentación 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 & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 55 / 59

Notas finales Formas de reutilización de código PYTHON (I) Posibilidades: 1 Abro el módulo, copio todo su contenido al portapapeles y lo pego en mi nuevo programa. 2 Cargo en mi fichero todo el módulo import modulo 3 Carga selectiva de cierto contenido del módulo. from modulo import algoqueestadefinidoenelmodulo Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 56 / 59

Notas finales Formas de reutilización de código PYTHON (II) Abro el módulo, 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ón!!!). 2 Mis programas siguen siendo enormes (muchas ĺıneas). 3 Puedo sobrescribir variables que uso en el nuevo código. 4 No puedo hacer un seguimiento de las modificaciones útiles que realizo ( En qué fichero hice aquellos cambios?) Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 57 / 59

Notas finales Formas de reutilización de código PYTHON (III) Cargo en mi fichero todo el contenido del módulo mediante el uso de la instrucción import. Ventajas: 1 No tengo que conocer con relativa profundidad el módulo. 2 Lo importa TODO. 3 Sintaxis sencilla. Inconvenientes: 1 Lo importa TODO. 2 Puede que el módulo ocupe mucho. Mi programa pesa más (en KB). Efecto creciente a medida que importe más y más módulos. 3 Puede que los nombres de variables dentro de los módulos sean muy largos modulo.clase.nombrevariable Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 58 / 59

Notas finales Formas de reutilización de código PYTHON (IV) Cargo parcialmente los contenidos de aquellos módulos que me interesan para mi programa. Hago uso de la instrucción from modulo import variable función. Ventajas: 1 Programas óptimos a nivel de tamaño y simplicidad. 2 Simplificación de los nombres de variables y métodos. Se accede a ellos mediante la llamada a variable o función. Inconvenientes: 1 Conocimiento avanzado del contenido de los módulos. 2 Múltiples sentencias de importación. Conocimiento avanzado del contenido de los módulos. 3 Múltiples sentencias de importación. 4 Posibilidad de colisión de nombres. Cesar Husillos & Víctor Terrón (IAA-CSIC) Módulos Abril de 2014 59 / 59