Tema 0 Introducción
Curso de Python Avanzado
Juan Pedro Bolívar Puente
Instituto de Astrofísica de Andalucía
Mayo de 2011
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
1 / 40
Índice
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
2 / 40
Índice
Introducción
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
3 / 40
Introducción
Página web
http://www.sinusoid.es/python-avanzado
Tutorías
[email protected]
¿Dónde?
Sala de Juntas del Instituto de Astrofísica de Andalucía
¿Cuándo?
9 a 13 de Mayo de 2011, de 9:00 a 14:30 (25 horas)
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
4 / 40
Introducción
Objetivos
Aprender el lenguaje con profundidad
Aprender a hacer aplicaciones grandes
’Idioms’, modularidad, organización
Aprender a hacer aplicaciones modernas
Interfaces gráficas, web
Aprender a hacer aplicaciones buenas
Pruebas, eficiencia, ...
¡En Python!
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
5 / 40
Introducción
¡Volvernos renacentistas!
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
6 / 40
Índice
Herramientas
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
7 / 40
Herramientas
IPython es tu amigo
Se recomienda usar ipython
In [0]: %quickref
In [1]: %alias
In [2]: ls
In [3]: ! top
In [4]: print _i , __i , _ih [1:2]
In [5]: dir list
In [6]: %who
In [7]: open ( ’t < TAB >
In [8]: %timeit
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
8 / 40
Herramientas
Pizarra virtual
gobby nos servirá para editar colaborativamente
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
9 / 40
Herramientas
El mejor editor del mundo ...
Es delicioso usar todo esto en emacs
Integra ipython
Ejecuta código
directamente
Resalta errores
Se conecta con
gobby
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
10 / 40
Índice
Repaso
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
11 / 40
Valores y operadores
Repaso
1 == 1
1 is 1
[1] == [1]
[1] is [1]
type (1.2)
a = 2
a += 1
print a
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
12 / 40
Listas y cadenas
Repaso
s = ’ abc ’
s . replace ( ’b ’ , ’B ’)
print s
’ hola ’ is ’ hola ’
s2 = list ( s )
s2 [1] = ’B ’
print s2
print ’ ’. join ( s2 )
range (2 , 22 , 2)
[3 , ’ hola ’ , 5.2]
[ x **2 for x in range (10) if x %2==0]
if []:
print " No me ejecuto "
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
13 / 40
Diccionarios
Repaso
a = { ’ java ’ : ’ i n q u i s i c i o n ’ ,
’ python ’ : ’ r e n a c i m i e n t o ’ ,
’ lisp ’ : 1958 ,
’ cobol ’ : None }
a [ ’ python ’] == ’ r e n a c i m i e n t o ’
a [ ’ lisp ’] += 1
del a [ ’ java ’]
b = dict ([(1 , 9) , (1 , 10) , (2 , 20)])
n = ’ Juan Pedro Bolivar Puente ’
dict ( zip ( range ( len ( n )) , n ))
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
14 / 40
Bucles e IO
Repaso
for idx in range (5):
print idx
for key , val in b . i te ri t em s ():
print key , ’ -> ’ , val
while True :
s = r aw _i n pu t ( ’ Dime guapo : ’)
if s . lower () == ’ guapo ’:
break
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
15 / 40
Funciones e IO
Repaso
import sys
def a cr os t ic o ( fname ):
f = open ( fname )
for x in f . r ea dl i ne s ():
sys . stdout . write (
x [0]. replace ( ’\ n ’ , ’ ’ ))
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
16 / 40
Funciones
Repaso
def saludar ( d e sp ed i da = False ):
if d es pe d id a :
print " Adios mundo ! "
else :
print " hola mundo ! "
saludar ()
saludar ( True )
saludar ( d e sp ed i da = True )
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
17 / 40
Índice
Módulos
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
18 / 40
Módulos
Módulos
Modulo = Espacio de nombres
Agrupa funciones, clases, constantes, globales ...
Ejemplo: Importar un módulo
import os
print os . name
Ejemplo: Importar un nombre
from os import name
print name
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
19 / 40
Modulos
Módulos
Ejemplo: Importar un submódulo
import os . path
from os import path
print path . join ( ’ una ’ , ’ ruta ’)
Ejemplo: Renombrado
import os . path as p
print p . exists ( ’/ ’)
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
20 / 40
Módulos
Modulos
Terminologia
Modulo Módulo hoja.
Es un fichero .py
Paquete Módulo con submódulos.
Es un directorio con fichero
init .py
A veces usaremos indistintamente el termino módulo
¡Atención!
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
21 / 40
Búsqueda de módulos
Módulos
Busca en todos los directorios de sys.path
1 Para los modulos, busca un fichero .py con su
nombre en el directorio actual.
2 Para los paquetes, busca un subdirectorio con un
fichero
init .py en el directorio actual.
Si no encuentra tira ImportError
sys . path = [ os . getcwd () ] + \
P Y T H O N P A T H + \
i n s t a l l a t i o n d ep en d en t
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
22 / 40
Carga de un módulo
Módulos
1 El módulo ¡se ejecuta!
2 En un paquete, se ejecuta
init .py.
3 Los nombres creados ⇒ objeto módulo.
4
name
contiene el nombre de nuestro módulo.
5 Módulo raiz se llama
main
Patrón “funcion main”
if __name__ == ’ __main__ ’:
e j e c u t a r _ f u n c i o n _ m a i n ()
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
23 / 40
Índice
Documentacion
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
24 / 40
Documentacion
Documentacion
Docstring
La primera cadena de cada módulo, clase o función es
considerada de documentación.
Acceso
help (objeto) ⇒ interactivo.
objeto. doc ⇒ programático.
Usar cadenas triples ‘‘ ‘‘ ‘‘
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
25 / 40
Documentacion
Recomendaciones
Usar marcadores estilo JavaDoc
@param x: Un parametro ’x’
@return Valor de retorno.
@raise e Tira tal tipo de excepción.
@author Autor de un modulo, clase, funcion...
@date Fecha de creacion.
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
26 / 40
Documentacion
Recomendaciones
Usar marcadores estilo Sphinx
:param x: Un parametro ’x’
:return: Valor de retorno.
:raise e: Tira tal tipo de excepción.
:author: Autor de un modulo, clase, funcion...
:date: Fecha de creacion.
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
27 / 40
Documentacion
Recomendaciones
Usar estilos reStructuredText
Titulo
======
S ub ti t ul o
- - - - - - - - -
* Elemento 1
* Elemento 2
1. Ordenado 1
2. Ordenado 2
*cursiva*, **negrita**, \*, ...
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
28 / 40
Documentacion
Manejándose con la documentación
pydoc permite ver la documentación de cualquier
cosa desde la consola o el navegador
$ pydoc modulo
$ pydoc -w fichero ...
$ pydoc -g
$ pydoc -p <port>
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
29 / 40
Documentacion
ReStructuredText
doctutils permite trabajar con ficheros ReST
Es una biblioteca y demás trae utilidades
$ rst2html fich.rst > fich.html
$ rst2latex fich.rst > fich.tex
$ rst2odt fich.rst > fich.tex
... etc ...
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
30 / 40
Documentacion
Otras herramientas ...
Epydoc
Automática, sencilla de usar
Permite sintáxis JavaDoc
Ejemplo
http://epydoc.sourceforge.net/stdlib/
Sphinx
Menos automática
Produce documentación de más calidad
Ejemplo http://docs.python.org/library/
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
31 / 40
Índice
Ejemplos
Introducción
1
2 Herramientas
3 Repaso
4 Módulos
5 Documentacion
6 Ejemplos
Juan Pedro Bolívar Puente (Instituto de Astrofísica de Andalucía)
Tema 0 Introducción
Mayo de 2011
32 / 40
Ejemplo
Ejemplos
module bad
Usa UTF-8 sin directiva
No documenta.
Submodulos sin
Función de prueba sin
“patrón main”.
in
Comentarios de: Tema 0 Introducción - Curso de Python Avanzado (0)
No hay comentarios