2. >>> from iferminm import info
>>> print info iferminmontilla@gmail.com
{
'nombre': 'Israel Fermín Montilla',
'ocupación': 'programador',
'qué_hace_ahora': 'Lead Developer @ RingTu',
'blog': 'http://iferminmontilla.com',
'twitter': '@iferminm',
'organizaciones': ['PyVE', 'OpenVE'],
}
3. Lenguaje de alto nivel
Orientado a objetos
Fuertemente tipificado
Tipos dinámicos
DESDE EL CORE
Estándar
Autodocum
entado
Fácil introspección de objetosScripting
Programación
Funcional
Escrito en C
14. Operadores estándar
● Matemáticos
– Iguales que en otros lenguajes
● Menos la potencia que es **
● Lógicos:
– && => and
– || => or
– == => ==
– != => != ó <>
– ! => not
15. Sintaxis sencilla
● Declaración:
– a = valor
● Condiciones:
– if a == b and c == d:
print 'Hola'
elif a != d:
print 'Nada que hacer'
else:
print 'Chao'
16. Sintaxis sencilla
● Otras maneras:
– List comprehension:
● pares = [n for n in xrange(100) if not n % 2]
● plus_one = [n + 1 for n in xrange(100)]
– Filter:
● pares = filter(lambda n: not n % 2, xrange(100))
– Map:
● plus_one = map(lambda n: n + 1, xrange(100))
19. Pensando como un Pythonista
● Todo es un objeto
● Hay 3 tipos básicos de colecciones:
– Listas (mutables): [1, 2, 3, 4]
– Tuplas (no mutables): (1, 2, 3, 4)
– Diccionarios (hash): {'foo': 'bar', 'uno': 1}
● También maneja tipos primitivos
– Enteros
– Cadenas de caracteres (no mutables)
– ...
20. Pensando como un Pythonista
● Variables vs Bindings
No hay variables:
Sino objetos y nombres:
0010101011
111100101
0x123ffab090ed
42vida_univ_y_lo_demas
21. Pensando como un Pythonista
● Variables vs Bindings
int a = 7303014;
printf(“%i %s”, a, (char*) &a);
---> 7303014 foo
22. Pensando como un Pythonista
● Variables vs Bindings
int a = 7303014;
printf(“%i %s”, a, (char*) &a);
---> 7303014 foo
a 42
>>> a = 42
23. Pensando como un Pythonista
● Variables vs Bindings
int a = 7303014;
printf(“%i %s”, a, (char*) &a);
---> 7303014 foo
a
42
“python”
>>> a = 42
>>> a = “python”
24. Pensando como un Pythonista
● Variables vs Bindings
int a = 7303014;
printf(“%i %s”, a, (char*) &a);
---> 7303014 foo
a
42
“python”
>>> a = 42
>>> a = “python”
Conteo de referencias
25. Pensando como un Pythonista
● Variables vs Bindings
int a = 7303014;
printf(“%i %s”, a, (char*) &a);
---> 7303014 foo
a “python”
>>> a = 42
>>> a = “python”
Conteo de referencias
26. Pensando como un Pythonista
● Interned Objects
a 99091234328
>>> a = 99091234328
27. Pensando como un Pythonista
● Interned Objects
a
b
99091234328
99091234328
>>> a = 99091234328
>>> b = 99091234328
28. Pensando como un Pythonista
● Interned Objects
a
b
c
99091234328
99091234328
4
>>> a = 99091234328
>>> b = 99091234328
>>> c = 4
29. Pensando como un Pythonista
● Interned Objects
a
b
c
d
99091234328
99091234328
4
>>> a = 99091234328
>>> b = 99091234328
>>> c = 4
>>> d = 4
30. Pensando como un Pythonista
● PEP8:
– Identar a 4 espacios
– Escribir “bonito”
● a = x + 3 y no a=x+3
– Agrupar código en párrafos
– Aprovechar las funciones core
– … entre muchas otras cosas
● El ZEN de python
32. Clases
● Declaración:
– class NombreClase(ClaseBase):
class_variables = val
def __init__(self, params, *args, **kwargs):
self.attr = param
…
● Si no hay clase base, por defecto hereda de:
– object
33. Clases
● Declaración:
– class NombreClase(ClaseBase):
class_variables = val
def __init__(self, params, *args, **kwargs):
self.attr = param
…
● Si no hay clase base, por defecto hereda de:
– object
34. Métodos de clase
● class Clase(ClaseBase):
def __init__(self, *args, **kwargs):
(…)
@classmethod
def method(cls, *args, **kwargs):
(...)
35. Créditos por las imágenes
● http://3.bp.blogspot.com/_W_zETys1xFc/TJd3kmJ7_kI/AAAAAAAABDI/X5q-wepEGLc/s1600/Python.png
● http://ninjaide.webfactional.com/static/common/img/logo.256.png
● http://wqimg.s3.amazonaws.com/ci/python-223.jpg
● http://media.boingboing.net/wp-content/uploads/2011/10/dennis_ritchie.jpg
● http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Guido_van_Rossum_OSCON_2006.jpg/200px-
Guido_van_Rossum_OSCON_2006.jpg