introduccion a python
DESCRIPTION
Intro a Python para clase de Python en UNQTRANSCRIPT
- 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
-
- Qu es Python?
-
- Algunos usuarios de Python
-
- Corriendo e interpretando
-
- Tipos de datos
-
- Controles de flujo
-
- Encapsulando cdigo
-
- Tres detalles
3. Qu es Python?
-
- Algunas caractersticas
-
- Propiedades del lenguaje
-
- Biblioteca estndar (con las pilas puestas)
-
- Python Argentina
4. Algunas caractersticas
-
- GratisYLibre
-
- Y Open Source, todo por el mismo precio:cero
-
- Maduro (+14 aos)
-
- Diseo elegante yrobusto
-
- Peroevoluciona
-
- Fcilde aprender
-
- Se lee como pseudo-cdigo
-
- Sintaxissencilla
-
- Extremadamenteportable
-
- 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
-
- Multi-paradigma
-
- Todo son objetos
-
- Pero puede usarse de manera procedural
-
- Mdulos, clases, funciones, generadores
-
- Viene con lasbaterias incluidas
-
- Extensa biblioteca estndar
-
- Clave en laproductividadde Python
9. Ms propiedades
-
- Manejo moderno deerrores
-
- Porexcepciones
-
- Muy tildetalle de error
-
- Tipos de datos dealto nivel
-
- Enteros sin lmites , strings, flotantes, complejos
-
- Listas,diccionarios , conjuntos
-
- Intrprete interactivo
-
- 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
-
- Basesde datos
-
- MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase
-
- Interfacesgrficas
-
- Qt, GTK, win32, wxWidgets, Cairo
-
- FrameworksWeb
-
- 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
-
- Quienessomos?
-
- Grupo deentusiastasde Python
-
- Referencia para la aplicacin ydifusindel lenguaje
-
- Cmoparticipar ?
-
- Suscribindose a laLista de Correo(somos+250 )
-
- Asistiendoa lasreunionesy eventos
-
- Ms info en la pgina:www.python.com.ar
-
- PyAr es federal
-
- Sepuedendeben organizarreuniones en otras provincias
-
- No hay que pedir permiso,slo coordinarlas
13. Algunos usuarios de Python 14. Corriendo e interpretando
-
- Menos charla y ms accin
-
- Pythonesinterpretado
-
- No hace falta compilar
-
- Ciclo corto de pruebas
-
- Y encima tenemos elIntrprete Interactivo
-
- Go!Go! Go!
-
- Ac es donde vamosa la realidad , :)
-
- Juro que antes andaba!
-
- Go!
15. Tipos de datos
-
- Haciendo nmeros, y ms nmeros
-
- Cadenas, y como accederlas
-
- Listas, listas, y muchas listas
-
- Conjuntos
-
- Diccionarios, diccionarios!
16. Haciendo nmeros
-
- Enteros
-
- >>> 2+2
-
- 4
-
- >>> (50 - 5*6) / 4
-
- 5
-
- >>> 7 / 3
-
- 2
-
- >>> 7 % 3
-
- 1
-
- >>> 23098742098472039 * 120894739
-
- 2792516397223089453702821
-
- Floats
-
- >>> 3 * 3.75 / 1.5
-
- 7.5
-
- >>> 7 / 2.3
-
- 3.0434782608695654
17. Ms nmeros
-
- Complejos
-
- >>> 2 + 3j
-
- (2+3j)
-
- >>> (2+3j * 17) ** (2+5j)
-
- (-0.91258832667469336-0.82498333629811516j)
-
- >>> (3-4j) ** 2.1
-
- (-10.797386682316887-27.308377455385106j)
-
- Recortando los decimales
-
- >>> int(12.3)
-
- 12
-
- >>> round(2.7526)
-
- 3.0
-
- >>> round(2.7526, 2)
-
- 2.75
18. Cadenas
-
- Comillas , apstrofos, triples
-
- >>> 'Una cadena es una secuencia de caracteres'
-
- ' Una cadena es una secuencia de caracteres '
-
- >>> "Ella dijo: 'si'"
-
- "Ella dijo: 'si'"
-
- >>> """Una linea
-
- ... y la otra"""
-
- 'Una linea y la otra'
-
- Algunasoperaciones
-
- >>> "Hola" + " mundo"
-
- 'Hola mundo'
-
- >>> "Eco " * 4
-
- 'Eco Eco Eco Eco '
-
- >>> "Hola mundo".strip()
-
- 'Hola mundo'
-
- >>> len("Hola mundo")
-
- 10
19. Accediendo a las cadenas
-
- Porposicin
-
- >>> saludo = 'Hola mundo'
-
- >>> saludo[0]
-
- 'H'
-
- >>> saludo[3]
-
- 'a'
-
- >>> saludo[-2]
-
- 'd'
-
- Rebanando
-
- >>> saludo[2:5]
-
- 'la '
-
- >>> saludo[2:8]
-
- 'la mun'
-
- >>> saludo[:4]
-
- 'Hola'
-
- >>> saludo[-2:]
-
- 'do'
20. Listas
-
- Corchetes , varios tipos de elementos
-
- >>> a = ['harina', 100, 'huevos', 'manteca']
-
- >>> a
-
- ['harina', 100, 'huevos', 'manteca']
-
- Accedemos como cualquiersecuencia
-
- >>> a[0]
-
- 'harina'
-
- >>> a[-2:]
-
- ['huevos', 'manteca']
-
- Concatenamos, reemplazamos
-
- >>> a + ['oro', 9]
-
- ['harina', 100, 'huevos', 'manteca', 'oro', 9]
-
- >>> a[0] = "sal"
-
- >>> a
-
- ['sal', 100, 'huevos', 'manteca']
21. Y dale con las listas
-
- Pueden tener inclusootras listas
-
- >>> a
-
- ['sal', 100, 'huevos', 'manteca']
-
- >>> a[1] = ["Hola", 7]
-
- >>> a
-
- ['sal', ['Hola', 7], 'huevos', 'manteca']
-
- Borramoselementos
-
- >>> del a[-1]
-
- >>> a
-
- ['sal', ['Hola', 7], 'huevos']
-
- Tenemos otrosmtodos
-
- >>> a.index(huevos)
-
- 2
-
- >>> a.sort()
-
- >>> a
-
- [['Hola', 7], 'huevos', 'sal']
22. Conjuntos
-
- Definimoscon set()
-
- >>> juego = set("typus pocus")
-
- >>> juego
-
- set([' ', 'c', 'o', 'p', 's', 'u', 't', 'y'])
-
- >>> hechizo = set(["h", "o", "c", "u", "s", " "])
-
- >>> hechizo.update(set("pocus"))
-
- >>> hechizo
-
- set([' ', 'c', 'h', 'o', 'p', 's', 'u'])
-
- Operamos
-
- >>> hechizo - juego
-
- set(['h'])
-
- >>> hechizo & juego
-
- set([' ', 'c', 'o', 'p', 's', 'u'])
-
- >>> hechizo.remove("h")
-
- >>> hechizo.add("Merlin")
-
- >>> hechizo
-
- set([' ', 'c', 'Merlin', 'o', 'p', 's', 'u'])
23. Diccionarios
-
- Definimos conllaves
-
- >>> dias = {"enero": 31, "junio": 30,"julio": 30 }
-
- >>> dias
-
- {'julio': 30, 'enero': 31, 'junio': 30}
-
- >>> dias["enero"]
-
- 31
-
- >>> dias["agosto"] = 31
-
- >>> dias["julio"] = 31
-
- >>> dias
-
- { 'julio': 31 , 'enero': 31, 'junio': 30, 'agosto': 31}
-
- >>> cualquiercosa = {34: [2,3], (2, 3): {3: 4}}
-
- Borrando
-
- >>>deldias["julio"]
-
- >>> dias
-
- {'enero': 31, 'junio': 30, 'agosto': 31}
24. Ms diccionarios
-
- Viendoqu hay
-
- >>> "marzo" in dias
-
- False
-
- >>> dias.keys()
-
- ['enero', 'junio', 'agosto']
-
- >>> dias.values()
-
- [31, 30, 31]
-
- Otrosmtodos
-
- >>> dias.get("agosto", "No tenemos ese mes")
-
- 31
-
- >>> dias.get("mayo", "No tenemos ese mes")
-
- 'No tenemos ese mes'
-
- >>> dias.pop("agosto")
-
- 31
-
- >>> dias
-
- {'enero': 31, 'junio': 30}
25. Controles de flujo
-
- Que pasarasi ...
-
- ... por cadauno de esos hacemos algo...
-
- ... mientrasesperamos otra cosa?
-
- Eso s, hasta que se rompa algo!
26. Si tal cosa o la otra
-
- Estructura delif
-
- a = ...
-
- ifa == 0:
-
- print "Ojo con el valor de b"
-
- b = 0
-
- elifa > 100 or a < 0:
-
- print "Error en el valor de a"
-
- b = 0
-
- else :
-
- b = c / a
-
- print b
-
- Eso que haydespusdel if:
-
- or, and, not
-
- < > == != in is
-
- Todoevalua aFalsooVerdadero
27. Por cada uno
-
- Estructura delfor
-
- >>> bichos = ["pulgas", "piojos", "cucarachas"]
-
- >>>forbichinbichos:
-
- ...print "Mata-" + bich
-
- ...
-
- Mata-pulgas
-
- Mata-piojos
-
- Mata-cucarachas
-
- Si queremos lasecuencia de nmeros
-
- >>>range (5)
-
- [0, 1, 2, 3, 4]
-
- >>> for i in range(5):
-
- ...print i**2
-
- ...
-
- 0
-
- al
-
- 16
28. Mientras tanto...
-
- Estructura delwhile
-
- >>> a = 0
-
- >>>whilea>> 14 / 2
-
- 7
-
- >>> 14 / 0
-
- Traceback(most recent call last):
-
- File "", line 1, in
-
- ZeroDivisionError : integer division or modulo by zero
-
- Podemoscapturarlas
-
- >>> try:
-
- ...print 14 / 0
-
- ... exceptZeroDivisionError :
-
- ...print "error!"
-
- ...
-
- error!
30. Manejando lo excepcional
-
- Es muy verstil
-
- 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):
-
- File "", line 1, in
-
- ValueError: Aca contamos que pas
31. Encapsulando cdigo
-
- Funcionesy ms funciones
-
- Clases, o como tratar demodelar la realidad
-
- Mdulosy paquetes
32. Funciones
-
- Estructurabsica
-
- >>>defalcuadrado ( n ) :
-
- ...res = n ** 2
-
- ...returnres
-
- ...
-
- >>> alcuadrado(3)
-
- 9
-
- Las funciones sonobjetos
-
- >>> alcuadrado
-
- < functionalcuadrado at 0xb7c30b54>
-
- >>> f = alcuadrado
-
- >>> f(5)
-
- 25
33. Ms funciones
-
- Tengo muchaflexibilidadcon losargumentos
-
- >>> def func(a, b=0, c=7):
-
- ...return a, b, c
-
- ...
-
- >>> func(1)
-
- (1, 0, 7)
-
- >>> func(1, 3)
-
- (1, 3, 7)
-
- >>> func(1, 3, 9)
-
- (1, 3, 9)
-
- >>> func(1, c=9)
-
- (1, 0, 9)
-
- >>> func(b=2, a=-3)
-
- (-3, 2, 7)
34. Clases
-
- Armandouna clase
-
- >>>classMiClase:
-
- ...x = 3
-
- ...def f(self):
-
- ...return 'Hola mundo'
-
- ...
-
- >>> c = MiClase()
-
- >>> c.x
-
- 3
-
- >>> c.f()
-
- 'Hola mundo
-
- Heredando
-
- >>> class MiClase(ClasePadre):
-
- >>> class MiClase(ClasePadre, ClaseTio):
35. El mdulo ms paquete
-
- Mdulos
-
- Funciones, o clases, olo que seaen un archivo
-
- Es un.py normal , slo que lo importamos y usamos
-
- Fcil, rpido,funciona
-
- Tengo un pos.py, con la clase de la filmina anterior:
-
- >>> importpos
-
- >>> p =pos. Posicion(2, 3)
-
- >>> p.x
-
- 2
-
- Paquetes
-
- Cuando tenemosmuchos mdulosjuntos
-
- Usamosdirectorios , e incluso subdirectorios
36. Tres detalles
-
- List comprehensions
-
- Generadores
-
- Espacios de nombres
37. Entendiendo de listas
-
- List comprehensions
-
- >>> vec = [3, 7, 12, 0, 3, -13, 45]
-
- >>>[ x**2forxinvec ]
-
- [9, 49, 144, 0, 9, 169, 2025]
-
- >>>[ x**2forxinvecifx >> sum( [ x**2forxinrange(1000) ] )
-
- 332833500
-
- >>> len( [ xforxinrange(1000)if(x**2)%2 == 0 ] )
-
- 500
38. Generadores
-
- Ejemplo : Funcin que nosdevuelve una cantidad de algos
-
- >>> def fibonacci(limite):
-
- ...valores = []
-
- ...a, b = 0, 1
-
- ...while b < limite:
-
- ...valores.append(b)
-
- ...a, b = b, a+b
-
- ...return valores
-
- >>> fibonacci
-
- >>> fibonacci(10)
-
- [1, 1, 2, 3, 5, 8]
-
- >>> t = 0
-
- >>> for i in fibonacci(10): t += i
-
- >>> t
-
- 20
-
- >>> for i in fibonacci(999999999999999999):# ouch!
39. Seguimos generando
-
- Somos vagos, vamos devolviendovalor por valor
-
- >>>deffibonacci(limite):
-
- ...a, b = 0, 1
-
- ...while b < limite:
-
- ...yield b
-
- ...a, b = b, a+b
-
- ...
-
- >>> fibonacci
-
- >>> fibonacci(10)
-
- >>> t = 0
-
- >>> for i in fibonacci(999999999999999999):
-
- ...t += i
-
- >>> t
-
- 1779979416004714188
40. Una gran idea
-
- Hay variosespacios de nombres
-
- Bsicos:localyglobal
-
- Los tienen las funciones, clases, mdulos
-
- Elmismo ejemploque antes!
-
- >>> import pos
-
- >>> p = pos.Posicion(2, 3)
-
- >>> p.x
-
- 2
-
- Mstilesde lo que parecen
-
- 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/