Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python para todos

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Python para todos

Introducción al lenguaje de programación Python

Avatar for Matías Iturburu

Matías Iturburu

August 27, 2012

Other Decks in Programming

Transcript

  1. . . . . . . Mirando el lenguaje a

    lo paracaidista Interpretado:
  2. . . . . . . Mirando el lenguaje a

    lo paracaidista Interpretado: Sintaxis simple
  3. . . . . . . Mirando el lenguaje a

    lo paracaidista Interpretado: Sintaxis simple Multiparadigma
  4. . . . . . . Mirando el lenguaje a

    lo paracaidista Interpretado: Sintaxis simple Multiparadigma Baterias incluidas
  5. . . . . . . Interpretado Scripts compilados a

    demanda a bytecode. Soporta extensiones en C y C++ La ejecución de programas grandes es costosa en memoria (pero no tanto) Implementacion canónica en C (cpython) pero otras existen: Jython (Java) Iron Python (C#) Embebido Pypy (Compilación JIT)
  6. . . . . . . Sintaxis simple Amplia variedad

    de estructuras de datos: Strings “” Enteros, Flotantes: 3 3.4 Muchas colecciones: (‘a’, ‘b’) [1,2,3,4,5] {‘key’:value}
  7. . . . . . . Variables sin declaración de

    tipos, el interprete mantiene la referencia. >>> a = 3 3 >>> a + 2 5 >>> a = "A" A
  8. . . . . . . Con algunas restricciones de

    tipos: >>> a + 3 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects
  9. . . . . . . Sin ornamentaciones, los bloques

    se definen con indentaciones: if 2<3: print "Cuando llueve llueve" else: print "Esto no sucede nunca"
  10. . . . . . . Un bucle for de

    alto nivel para cualquier tipo iterable for i in "This will print each char": print i d = {'a':'b', 'c':'d', 'f':'g'} for k,v in d print v
  11. . . . . . . Multiparadigma Procedural Ejecución secuencial

    de arriba a abajo. Ideal para reemplazar scripts bash o perl #!/usr/bin/env python def func(name): return "Hello %s " % name if __name__ == "__main__": import sys script, name = sys.argv print func(name)
  12. . . . . . . Algunos elementos de progamación

    funcional: Comprehension de listas, sets* y diccionarios[1]: [x for x in range(0, 10) if x<5 or x>7] (x for x in range(x, 10)) {i : chr(65+i) for i in range(4)} map(lambda x: x<3 and x+2 or x+9, [x for x in range(0, 5)] ) [1] disponible a partir de python 2.7
  13. . . . . . . Programación orientada a objetos:

    Todo es un object. Argumentos, funciones y primitivas.
  14. . . . . . . Herencia intuitiva, soporte para

    herencia múltiple. >> class A: ... name='A' >>> A <class __main__.A at 0x1b7ba78> >>> A.name 'A' >>> class B: ... name='B' >>> class C(A, B): ... pass >>> C.name 'A'
  15. . . . . . . No hay métodos privados,

    pero el scope funciona como esperás. class A: name = 'A' def prints_name(self): prints self.name >>> a = A() >>> a.prints_name() >>> prints_name() NameError: name 'prints_name' is not defined
  16. . . . . . . No hay métodos privados,

    aunque por convención algunos métodos implicitos empiezan con _. class A: def __init__(self): print "Esto se ejecuta al instanciar la clase" class B(A): def __init__(self): print super(self, A).__init__, "... Y se puede sobree
  17. . . . . . . Baterías incluídas La distribución

    incluye una biblioteca standard muy completa >>> import math >>> math.cos(math.pi / 4.0) 0.70710678118654757 >>> math.log(1024, 2) 10.0 $ python -m SimpleHTTPServer
  18. . . . . . . Métodos built-in concisos >>>

    s = "dabale arroz a la zorra el abad".split(' ') ['dabale', 'arroz', 'a', 'la', 'zorra', 'el', 'abad'] >>> map(lambda x: x.upper(), s)
  19. . . . . . . Todo al alcance de

    la mano: $ pip search web framework
  20. . . . . . . Y que puedo hacer

    con esto? Algebra lineal, Matrices, etc: SciPy, Numpy
  21. . . . . . . Y que puedo hacer

    con esto? Algebra lineal, Matrices, etc: SciPy, Numpy Procesamiento de lenguaje natural: NLTk
  22. . . . . . . Y que puedo hacer

    con esto? Algebra lineal, Matrices, etc: SciPy, Numpy Procesamiento de lenguaje natural: NLTk Aplicaciones de escritorio: Glade, WxWidgets
  23. . . . . . . Y que puedo hacer

    con esto? Algebra lineal, Matrices, etc: SciPy, Numpy Procesamiento de lenguaje natural: NLTk Aplicaciones de escritorio: Glade, WxWidgets Programación asincrónica: Twisted, Geventlet
  24. . . . . . . Y que puedo hacer

    con esto? Algebra lineal, Matrices, etc: SciPy, Numpy Procesamiento de lenguaje natural: NLTk Aplicaciones de escritorio: Glade, WxWidgets Programación asincrónica: Twisted, Geventlet Desarrollo web: Django, etc
  25. . . . . . . Qué es lo que

    no? Sistemas en tiempo real
  26. . . . . . . Qué es lo que

    no? Sistemas en tiempo real Compartir hilos en varios CPU
  27. . . . . . . Qué es lo que

    no? Sistemas en tiempo real Compartir hilos en varios CPU Cualquier cosa que utilice mucha procesamiento matemático
  28. . . . . . . Qué es lo que

    no? Sistemas en tiempo real Compartir hilos en varios CPU Cualquier cosa que utilice mucha procesamiento matemático Controladores