- 1. Introduccin a Python Sebastin Bassi [email_address]
www.genesdigitales.com www.dnalinux.com Basado en presentacin de:
Facundo Batista http://www.taniquetil.com.ar/plog/ Arte grfico:
Diana Batista
2. Indice
-
- Algunos usuarios de Python
-
- Corriendo e interpretando
3. Qu es Python?
-
- Biblioteca estndar (con las pilas puestas)
4. Algunas caractersticas
-
- Y Open Source, todo por el mismo precio:cero
-
- Unix, Windows, Mac, BeOS, Win/CE
-
- DOS, OS/2, Amiga, VMS, Cray...
5. Copia de archivo en C #include int main(int argc, char
**argv) { FILE *in, *out; int c; in = fopen("input.txt", "r"); out
= fopen("output.txt", "w"); while ((c = fgetc(in)) != EOF) {
fputc(c, out); } fclose(out); fclose(in); } 6. Copia de archivo en
Python in=open("input.txt") out=open("output.txt", "w")
out.writelines(in) 7. Parseando BLAST en XML from Bio.Blast import
NCBIXML XMLin="/home/sbassi/bioinfo/INTA/filtracMT.xml"
FASTANout='blastMTout.csv' fo=open(FASTANout,'w')
b_records=NCBIXML.parse(open(XMLin)) for b_record in b_records:
fo.write(b_record.query+""+b_record.alignments[0].title+""
+str(b_record.alignments[0].hsps[0].expect)+' ') fo.close() 8.
Propiedades del lenguaje
-
- Compila a bytecode interpretado
-
- La compilacin esimplcita y automtica
-
- Tipadodinmico , perofuerte
-
- Pero puede usarse de manera procedural
-
- Mdulos, clases, funciones, generadores
-
- Viene con lasbaterias incluidas
-
- Extensa biblioteca estndar
-
- Clave en laproductividadde Python
9. Ms propiedades
-
- Tipos de datos dealto nivel
-
- Enteros sin lmites , strings, flotantes, complejos
-
- Listas,diccionarios , conjuntos
-
- Clave en elbajo conteo de bugs
-
- Acelerasorprendentemente eltiempo de desarrollo
-
- Permiteexplorar ,probare incluso ver ladocumentacin
10. Las bateras includas
-
- La Biblioteca Estndar ayuda con...
-
- Servicios del sistema, fecha y hora,
subprocesos,sockets,internacionalizacin y localizacin, base de
datos, threads, formatos zip, bzip2, gzip, tar, expresiones
regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, XML-RPC
(cliente y servidor), email, manejo asincrnico de sockets, clientes
HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP,
herramientas MIME, interfaz con el garbage collector, serializador
y deserializador de objetos, debugger, profiler, random, curses,
logging, compilador, decompilador, CSV, anlisis lexicogrfico,
interfaz grfica incorporada, matemtica real y compleja, criptografa
(MD5 y SHA), introspeccin, unit testing, doc testing, etc.,
etc...
11. Le ponemos ms pilas
-
- MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase
-
- Qt, GTK, win32, wxWidgets, Cairo
-
- Django, Turbogears, Zope, Plone, webpy
-
- Y unmontn ms de temas ...
-
- Biopython: Manejo de secuencias
-
- PIL: para trabajar con imgenes
-
- PyGame: juegos, presentaciones, grficos
-
- SymPy: matemtica simblica
-
- Numpy: calculos de alta performance
12. Python Argentina
-
- Grupo deentusiastasde Python
-
- Referencia para la aplicacin ydifusindel lenguaje
-
- Suscribindose a laLista de Correo(somos+250 )
-
- Asistiendoa lasreunionesy eventos
-
- Ms info en la pgina:www.python.com.ar
-
- Sepuedendeben organizarreuniones en otras provincias
-
- No hay que pedir permiso,slo coordinarlas
13. Algunos usuarios de Python 14. Corriendo e interpretando
-
- Y encima tenemos elIntrprete Interactivo
-
- Ac es donde vamosa la realidad , :)
15. Tipos de datos
-
- Haciendo nmeros, y ms nmeros
-
- Cadenas, y como accederlas
-
- Listas, listas, y muchas listas
-
- Diccionarios, diccionarios!
16. Haciendo nmeros
-
- >>> 23098742098472039 * 120894739
-
- 2792516397223089453702821
17. Ms nmeros
-
- >>> (2+3j * 17) ** (2+5j)
-
- (-0.91258832667469336-0.82498333629811516j)
-
- (-10.797386682316887-27.308377455385106j)
18. Cadenas
-
- Comillas , apstrofos, triples
-
- >>> 'Una cadena es una secuencia de caracteres'
-
- ' Una cadena es una secuencia de caracteres '
19. Accediendo a las cadenas
-
- >>> saludo = 'Hola mundo'
20. Listas
-
- Corchetes , varios tipos de elementos
-
- >>> a = ['harina', 100, 'huevos', 'manteca']
-
- ['harina', 100, 'huevos', 'manteca']
-
- Accedemos como cualquiersecuencia
-
- Concatenamos, reemplazamos
-
- ['harina', 100, 'huevos', 'manteca', 'oro', 9]
-
- ['sal', 100, 'huevos', 'manteca']
21. Y dale con las listas
-
- Pueden tener inclusootras listas
-
- ['sal', 100, 'huevos', 'manteca']
-
- ['sal', ['Hola', 7], 'huevos', 'manteca']
-
- ['sal', ['Hola', 7], 'huevos']
-
- [['Hola', 7], 'huevos', 'sal']
22. Conjuntos
-
- >>> juego = set("typus pocus")
-
- set([' ', 'c', 'o', 'p', 's', 'u', 't', 'y'])
-
- >>> hechizo = set(["h", "o", "c", "u", "s", " "])
-
- >>> hechizo.update(set("pocus"))
-
- set([' ', 'c', 'h', 'o', 'p', 's', 'u'])
-
- set([' ', 'c', 'o', 'p', 's', 'u'])
-
- >>> hechizo.add("Merlin")
-
- set([' ', 'c', 'Merlin', 'o', 'p', 's', 'u'])
23. Diccionarios
-
- >>> dias = {"enero": 31, "junio": 30,"julio": 30
}
-
- {'julio': 30, 'enero': 31, 'junio': 30}
-
- { 'julio': 31 , 'enero': 31, 'junio': 30, 'agosto': 31}
-
- >>> cualquiercosa = {34: [2,3], (2, 3): {3: 4}}
-
- {'enero': 31, 'junio': 30, 'agosto': 31}
24. Ms diccionarios
-
- ['enero', 'junio', 'agosto']
-
- >>> dias.get("agosto", "No tenemos ese mes")
-
- >>> dias.get("mayo", "No tenemos ese mes")
-
- {'enero': 31, 'junio': 30}
25. Controles de flujo
-
- ... por cadauno de esos hacemos algo...
-
- ... mientrasesperamos otra cosa?
-
- Eso s, hasta que se rompa algo!
26. Si tal cosa o la otra
-
- print "Ojo con el valor de b"
-
- print "Error en el valor de a"
-
- Todoevalua aFalsooVerdadero
27. Por cada uno
-
- >>> bichos = ["pulgas", "piojos", "cucarachas"]
-
- Si queremos lasecuencia de nmeros
28. Mientras tanto...
-
- Traceback(most recent call last):
-
- ZeroDivisionError : integer division or modulo by zero
-
- ... exceptZeroDivisionError :
30. Manejando lo excepcional
-
- try : Ac va el bloque de cdigo que queremos supervisar
-
- except : Atrapa todo, o slo lo que se le especifique
-
- else : Sino hubouna excepcin, se ejecuta esto
-
- finally : Lo que esta ac se ejecutasiempre
-
- Se puedencombinarde cualquier manera
-
- Y podemosgenerarexcepciones
-
- >>>raiseValueError("Aca contamos que pas")
-
- Traceback (most recent call last):
-
- ValueError: Aca contamos que pas
31. Encapsulando cdigo
-
- Clases, o como tratar demodelar la realidad
32. Funciones
-
- < functionalcuadrado at 0xb7c30b54>
33. Ms funciones
-
- Tengo muchaflexibilidadcon losargumentos
-
- >>> def func(a, b=0, c=7):
34. Clases
-
- >>> class MiClase(ClasePadre):
-
- >>> class MiClase(ClasePadre, ClaseTio):
35. El mdulo ms paquete
-
- Funciones, o clases, olo que seaen un archivo
-
- Es un.py normal , slo que lo importamos y usamos
-
- Tengo un pos.py, con la clase de la filmina anterior:
-
- >>> p =pos. Posicion(2, 3)
-
- Cuando tenemosmuchos mdulosjuntos
-
- Usamosdirectorios , e incluso subdirectorios
36. Tres detalles
37. Entendiendo de listas
-
- >>> vec = [3, 7, 12, 0, 3, -13, 45]
-
- [9, 49, 144, 0, 9, 169, 2025]
-
- >>>[ x**2forxinvecifx >> sum( [
x**2forxinrange(1000) ] )
-
- >>> len( [ xforxinrange(1000)if(x**2)%2 == 0 ] )
38. Generadores
-
- Ejemplo : Funcin que nosdevuelve una cantidad de algos
-
- >>> def fibonacci(limite):
-
- >>> for i in fibonacci(10): t += i
-
- >>> for i in fibonacci(999999999999999999):#
ouch!
39. Seguimos generando
-
- Somos vagos, vamos devolviendovalor por valor
-
- >>> for i in fibonacci(999999999999999999):
40. Una gran idea
-
- Hay variosespacios de nombres
-
- Los tienen las funciones, clases, mdulos
-
- Elmismo ejemploque antes!
-
- >>> p = pos.Posicion(2, 3)
-
- Simplificanlaestructuraa mentalizar
-
- Prolijidad,legibilidad , traceabilidad
-
- Prubenlos, los van a extraar cuando no los tengan
41. Preguntas? Sugerencias? Espero que lo hayan disfrutadotanto
como yo, :) Muchas gracias! Basado en presentacin de: Facundo
Batista http://www.taniquetil.com.ar/plog/