introduccion a python

Download Introduccion a Python

If you can't read please download the document

Upload: guest44e947

Post on 12-Jun-2015

1.304 views

Category:

Technology


0 download

DESCRIPTION

Intro a Python para clase de Python en UNQ

TRANSCRIPT

  • 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/