]> git.llucax.com Git - personal/documentos.git/commitdiff
Charla de Python básica para el Día De Lenguajes.
authorLeandro Lucarella <llucax@gmail.com>
Thu, 26 Oct 2006 03:04:10 +0000 (03:04 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 26 Oct 2006 03:04:10 +0000 (03:04 +0000)
charla_ddl_python/common.mgp [new file with mode: 0644]
charla_ddl_python/presentacion.mgp [new file with mode: 0644]

diff --git a/charla_ddl_python/common.mgp b/charla_ddl_python/common.mgp
new file mode 100644 (file)
index 0000000..2ab81d6
--- /dev/null
@@ -0,0 +1,25 @@
+%%
+%% Seteos comunes basados en el default
+%%
+%%deffont "standard"     xfont "serif" "iso10646"
+%%deffont "thick"        xfont "sans-serif" "iso10646"
+%%deffont "typewriter"   xfont "monospace" "iso10646"
+%%deffont "standard"    xfont "Vera.ttf"
+%%deffont "thick"       xfont "VeraBd.ttf"
+%%deffont "typewriter"  xfont "VeraMono.ttf"
+%deffont "standard"    xfont "Bitstream Vera"
+%deffont "thick"       xfont "Bitstream Vera:Bold"
+%deffont "typewriter"  xfont "Bitstream Vera Mono"
+%%
+%default 1 area 90 90, leftfill, size 1, fore "black", back "white", font "thick"
+%default 2 size 7, vgap 10, prefix " "
+%default 3 size 2, bar "gray70", vgap 10
+%default 4 size 4, vgap 30, prefix " ", font "standard"
+%%
+%tab 1 size 4, vgap 40, prefix "  ", icon box "black" 50
+%tab 2 size 3, vgap 40, prefix "      ", icon arc "black" 50
+%tab 3 size 2, vgap 40, prefix "            ", icon delta3 "black" 40
+%%
+%% Que cachee la pagina que sigue, sin efectos
+%default 1 pcache 1 1 0 1
+%%
diff --git a/charla_ddl_python/presentacion.mgp b/charla_ddl_python/presentacion.mgp
new file mode 100644 (file)
index 0000000..25a1d74
--- /dev/null
@@ -0,0 +1,235 @@
+%% vim: set encoding=utf-8 :
+%include "common.mgp"
+%%
+%page
+%nodefault
+%center, size 7, font "standard", back "white", fore "black"
+
+Python Básico
+%size 4
+
+El lenguaje de la viborita
+
+%bar "gray" 5 10 80
+
+Leandro Lucarella (llucare@fi.uba.ar)
+
+LUGFI - UBA
+
+7 de octubre de 2006
+
+
+%page
+
+Reseña histórica
+
+       Creado en 1990 por Guido van Rossum (BDFL)
+       Nombrado en honor a los (únicos e inigualables) Monty Python
+       En 2000 aparece Python 2.0
+       En 2001 aparece Python 2.1 y la PSF, nueva "dueña" de Python.
+       Versión actual: 2.5 (recién salido del horno)
+       Futuro/Evolución -> PEPs -> Python 3000 (ver PEP)
+       Implementaciones: CPython, Jython, IronPython, PyPy, Nokia (S60)
+       Hablamos de CPython que es la principal (disponible en más de 35 plataformas)
+
+%page
+
+Características principales
+
+       Dinámico
+       Compila a bytecode (on the fly)
+       Interpretado, por VM
+       Fácilmente extensible usando módulos en C
+       Manejo de memoria automático (GC con detección de ciclos)
+       Core reducido y después syntactic sugar
+       Intérprete interactivo
+       Biblioteca estándar extensa y muchas (MUCHAS) extensiones
+       Números de precisión arbitraria
+       Concurrencia real (palo para Ruby =P)
+       Multiparadigma: OO, estructurado, funcional, genérica, metaprogramación, aspectos
+       Influenció otros lenguajes, como RUBY!!! y Boo (.NET)
+
+%page
+
+The Zen of Python (import this)
+
+       Beautiful is better than ugly.
+       Explicit is better than implicit.
+       Simple is better than complex.
+       Complex is better than complicated.
+       Flat is better than nested.
+       Sparse is better than dense.
+       Readability counts.
+       Special cases aren't special enough to break the rules.
+       Although practicality beats purity.
+
+%page
+
+The Zen of Python (continuación)
+
+       Errors should never pass silently.
+       Unless explicitly silenced.
+       In the face of ambiguity, refuse the temptation to guess.
+       There should be one-- and preferably only one --obvious way to do it.
+       Although that way may not be obvious at first unless you're Dutch.
+       Now is better than never.
+       Although never is often better than *right* now.
+       If the implementation is hard to explain, it's a bad idea.
+       If the implementation is easy to explain, it may be a good idea.
+       Namespaces are one honking great idea -- let's do more of those!
+
+%page
+
+Tipos
+
+       Tipado dinámico pero fuerte, duck typing
+       Todo es referencia (id), todo es un objeto (TODO)
+       Las clases son instancias de la clase type (que es instancia de sí mismo)
+       Los objetos son una identidad con un diccionario de atributos
+       Por lo tanto puedo modificar una clase dinámicamente
+       Las funciones son "ciudadanos de 1er orden"
+       Las funciones son objetos "callables" (que pueden ser atributos)
+       Los métodos son funciones atributo de una clase que toman el primer parámetro implícito
+       obj.metodo(a) es sintatic sugar de Clase.metodo(obj, a)
+
+%page
+
+Más sobre tipos
+
+       Mutabilidad
+       Secuencias
+       Built-in
+                CLASE      MUTABILIDAD  EJEMPLO
+                bool    -> Inmutable -> a_int = True
+                int     -> Inmutable -> a_int = 42
+                long    -> Inmutable -> a_long = 12345678901234567890
+                float   -> Inmutable -> a_float = 42.25
+                complex -> Inmutable -> a_complex = 42 + 25j
+                str     -> Immutable -> a_str = 'Wikipedia'
+                unicode -> Inmutable -> a_unicode = u'Wikipedia'
+                list    -> Mutable   -> a_list = [4.0, 'string', True]
+                tuple   -> Immutable -> a_tuple = (4.0, 'string', True)
+                set     -> Mutable   -> a_set = set([4.0, 'string', True])
+                dict    -> Mutable   -> a_dict = { 'key1' : 1.0, 'key2' : False }
+
+%page
+
+Sintaxis
+
+       Hola Mundo!
+            # coding: utf8
+            # (más formas de especificar, compatible con VIM/Emacs)
+            # Comentario
+            print "Hola mundo!"
+       Estructuras de control
+            if i < 10:
+                print "%d es chico" % i
+            elif i > 20:
+                print i, "es grande"
+            else:
+                Error de sintaxis
+       Bloques con identación??? (puaj? NO! Groso!)
+
+%page
+
+Sintaxis (continuación)
+
+       Más estructuras de control
+            while (no hay do-while, pero hay PEP!)
+                while i < 10:
+                    print i
+                    i += 1
+            for (sobre secuencias o "iterables")
+                l = [1, 2, 3, "hola", "chau"]
+                for item in l:
+                    print item
+                for i in xrange(10):
+                    print i
+
+%page
+
+Sintaxis
+
+       Funciones
+            def (para definir funciones)
+                def foo(a, b, *args, **kargs):
+                    print a, b
+                    for arg in args:
+                        print arg
+                    for (key, val) in kargs.iteritems():
+                        print key, '=', val
+                    if a == b:
+                        return True
+                    else:
+                        return False
+
+%page
+
+Sintaxis
+
+       Clases
+            class A1: pass
+            class A2: pass
+            class B(A1, A2):
+                atributo_de_clase = 1
+                def __init__(self, parametro1, *args)
+                    self.attr1 = parametro1
+                    self.lista = args
+                if atributo_de_clase == 1:
+                    def hola(self):
+                        print 1
+                else:
+                    def hola(self)
+                        print 2
+                class C:
+                    pass
+
+%page
+
+Sintaxis
+
+       Instanciación
+            a = A()
+            b = B(1)
+            c = B.C()
+            c.otro_atributo = lambda x, y: x + y
+       Private? Protected? Lo qué???
+
+%page
+
+Sintaxis - Excepciones
+
+       try-except
+            try:
+                for linea in file("algo.txt"):
+                    print linea
+            except Exception, e:
+                print e
+            else:
+                print "Todo OK"
+       try-finally
+            try:
+                for linea in file("algo.txt"):
+                    print linea
+            finally:
+                print "Listo!"
+       try-except-finally (PEP, en 2.5?)
+
+%page
+
+Sintaxis
+
+       Módulos (built-in)
+            import modulo
+            import modulo as mod
+            from modulo import Clase
+            from modulo import *
+            from modulo import Clase as C
+       Hay más, pero no hay tiempo (seguro ya estoy excedido con la hora)
+
+%page
+
+Preguntas?
+
+       Para los que todavía no se fueron a comer...
+