Introducción a
Python
Unlux 2007
Facundo Batista
Arte gráfico: Diana Batista
1
7
0
0
2
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
i
c
c
u
d
o
r
t
n
I
Indice
➢ ¿Qué es Python?
➢ Corriendo e interpretando
➢ Tipos de datos
➢ Controles de flujo
7
0
0
2
➢ Encapsulando código
x
u
l
n
U
–
n
o
h
t
y
P
a
i
c
c
u
d
o
r
t
n
I
➢ Tres detalles
ón
2
¿Qué es Python?
➢ Algunas características
➢ Propiedades del lenguaje
➢ Biblioteca estándar (con las pilas puestas)
7
0
0
2
x
u
l
n
U
–
➢ Python Argentina
i
c
c
u
d
o
r
t
n
I
n
o
h
t
y
P
a
ón
3
Algunas características
● Gratis Y Libre
✗ Y Open Source, todo por el mismo precio: cero
● Maduro (+14 años)
✗ Diseño elegante y robusto
✗ Pero evoluciona
● Fácil de aprender
✗ Se lee como pseudocódigo
✗ Sintaxis sencilla, lenguaje muy ortogonal
7
0
0
2
● Extremadamente portable
✗ Unix, Windows, Mac, BeOS, Win/CE
✗ DOS, OS/2, Amiga, VMS, Cray...
x
u
l
n
U
–
n
o
h
t
y
P
a
i
c
c
u
d
o
r
t
n
I
ón
4
Propiedades del lenguaje
● Compila a bytecode interpretado
✗ La compilación es implícita y automática
✗ Tipado dinámico, pero fuerte
● Multiparadigma
✗ Todo son objetos
✗ Pero puede usarse de manera procedural
● Módulos, clases, funciones, generadores
7
0
0
2
● Viene con las baterias incluidas
✗ Extensa biblioteca estándar
✗ Clave en la productividad de Python
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
5
i
c
c
u
d
o
r
t
n
I
Más propiedades
● Manejo moderno de errores
✗ Por excepciones
✗ Muy útil detalle de error
● Tipos de datos de alto nivel
✗ Enteros sin límites, strings, flotantes, complejos
✗ Listas, diccionarios, conjuntos
7
0
0
2
● Intérprete interactivo
x
u
l
n
U
–
n
o
h
t
y
P
a
i
c
c
u
d
o
r
t
n
I
✗ Clave en el bajo conteo de bugs
✗ Acelera sorprendentemente el tiempo de desarrollo
✗ Permite explorar, probar e incluso ver la documentación
ón
6
Las baterías incluídas
● La Biblioteca Estándar ayuda con...
✗ Servicios del sistema, fecha y hora, subprocesos, sockets,
internacionalización y localización, 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 asincrónico 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, análisis lexicográfico, interfaz gráfica
incorporada, matemática real y compleja, criptografía (MD5
y SHA), introspección, unit testing, doc testing, etc., etc...
x
u
l
n
U
–
7
0
0
2
n
o
h
t
y
P
a
ón
7
i
c
c
u
d
o
r
t
n
I
Le ponemos más pilas
● Bases de datos
✗ MySQL, PostgresSQL, MS SQL, Informix, DB/2, Sybase
● Interfaces gráficas
✗ Qt, GTK, win32, wxWidgets, Cairo
● Frameworks Web
✗ Django, Turbogears, Zope, Plone, webpy
● Y un montón más de temas...
ón
8
7
0
0
2
x
u
l
n
U
–
✗ PIL: para trabajar con imágenes
✗ PyGame: juegos, presentaciones, gráficos
✗ SymPy: matemática simbólica
✗ Numpy: calculos de alta performance
✗ ...
i
c
c
u
d
o
r
t
n
I
n
o
h
t
y
P
a
Python Argentina
● ¿Quienes somos?
✗ Grupo de entusiastas de Python
✗ Referencia para la aplicación y difusión del lenguaje
● ¿Cómo participar?
✗ Suscribiéndose a la Lista de Correo (somos +250)
✗ Asistiendo a las reuniones y eventos
✗ Más info en la página: www.python.com.ar
7
0
0
2
● PyAr es federal
x
u
l
n
U
–
i
c
c
u
d
o
r
t
n
I
n
o
h
t
y
P
a
✗ Se pueden deben organizar reuniones en otras provincias
✗ No hay que pedir permiso, sólo coordinarlas
ón
9
Corriendo e interpretando
● Menos charla y más acción
✗ Python es interpretado
✗ No hace falta compilar
✗ Ciclo corto de pruebas
✗ Y encima tenemos el Intérprete Interactivo
● Go! Go! Go!
7
0
0
2
x
u
l
n
U
–
✗ Acá es donde vamos a la realidad, :)
✗ ¡Juro que antes andaba!
✗ Go!
n
o
h
t
y
P
a
i
c
c
u
d
o
r
t
n
I
ón
10
Tipos de datos
➢ Haciendo números, y más números
➢ Cadenas, y como accederlas
➢ Listas, listas, y muchas listas
➢ Conjuntos
7
0
0
2
➢ Diccionarios, ¡diccionarios!
x
u
l
n
U
–
i
c
c
u
d
o
r
t
n
I
n
o
h
t
y
P
a
ón
11
Haciendo números
Enteros
>>> 2+2
4
>>> (50 5*6) / 4
5
>>> 7 / 3
2
>>> 7 % 3
1
>>> 23098742098472039 * 120894739
2792516397223089453702821
7
0
0
2
x
u
l
n
U
–
Floats
>>> 3 * 3.75 / 1.5
7.5
>>> 7 / 2.3
3.0434782608695654
n
o
h
t
y
P
a
ón
12
i
c
c
u
d
o
r
t
n
I
Más números
Complejos
>>> 2 + 3j
(2+3j)
>>> (2+3j * 17) ** (2+5j)
(0.912588326674693360.82498333629811516j)
>>> (34j) ** 2.1
(10.79738668231688727.308377455385106j)
7
0
0
2
Recortando los decimales
>>> int(12.3)
12
>>> round(2.7526)
3.0
>>> round(2.7526, 2)
2.75
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
13
i
c
c
u
d
o
r
t
n
I
Cadenas
Comillas, apóstrofos, 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\ny la otra'
7
0
0
2
Algunas operaciones
>>> "Hola" + " mundo"
'Hola mundo'
>>> "Eco " * 4
'Eco Eco Eco Eco '
>>> " Hola mundo ".strip()
'Hola mundo'
>>> len("Hola mundo")
10
n
o
h
t
y
P
a
x
u
l
n
U
–
ón
i
c
c
u
d
o
r
t
n
I
14
Accediendo a las cadenas
Por posición
>>> saludo = 'Hola mundo'
>>> saludo[0]
'H'
>>> saludo[3]
'a'
>>> saludo[2]
'd'
7
0
0
2
Rebanando
>>> saludo[2:5]
'la '
>>> saludo[2:8]
'la mun'
>>> saludo[:4]
'Hola'
>>> saludo[2:]
'do'
n
o
h
t
y
P
a
x
u
l
n
U
–
ón
i
c
c
u
d
o
r
t
n
I
15
Listas
Corchetes, varios tipos de elementos
>>> a = ['harina', 100, 'huevos', 'manteca']
>>> a
['harina', 100, 'huevos', 'manteca']
Accedemos como cualquier secuencia
>>> a[0]
'harina'
>>> a[2:]
['huevos', 'manteca']
7
0
0
2
x
u
l
n
U
–
Concatenamos, reemplazamos
>>> a + ['oro', 9]
['harina', 100, 'huevos', 'manteca', 'oro', 9]
>>> a[0] = "sal"
>>> a
['sal', 100, 'huevos', 'manteca']
n
o
h
t
y
P
a
ón
16
i
c
c
u
d
o
r
t
n
I
Y dale con las listas
Pueden tener incluso otras listas
>>> a
['sal', 100, 'huevos', 'manteca']
>>> a[1] = ["Hola", 7]
>>> a
['sal', ['Hola', 7], 'huevos', 'manteca']
7
0
0
2
Borramos elementos
>>> del a[1]
>>> a
['sal', ['Hola', 7], 'huevos']
Tenemos otros métodos
>>> a.index(“huevos”)
2
>>> a.sort()
>>> a
[['Hola', 7], 'huevos', 'sal']
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
17
i
c
c
u
d
o
r
t
n
I
Conjuntos
Definimos con 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'])
7
0
0
2
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'])
n
o
h
t
y
P
a
x
u
l
n
U
–
ón
i
c
c
u
d
o
r
t
n
I
18
Diccionarios
Definimos con llaves
>>> 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}}
7
0
0
2
Borrando
>>> del dias["julio"]
>>> dias
{'enero': 31, 'junio': 30, 'agosto': 31}
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
19
i
c
c
u
d
o
r
t
n
I
Más diccionarios
Viendo qué hay
>>> "marzo" in dias
False
>>> dias.keys()
['enero', 'junio', 'agosto']
>>> dias.values()
[31, 30, 31]
7
0
0
2
Otros métodos
>>> 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}
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
20
i
c
c
u
d
o
r
t
n
I
Controles de flujo
➢ ¿Que pasaría si...
➢ ...por cada uno de esos hacemos algo...
➢ ...mientras esperamos otra cosa?
➢ Eso sí, ¡hasta que se rompa algo!
7
0
0
2
x
u
l
n
U
–
i
c
c
u
d
o
r
t
n
I
n
o
h
t
y
P
a
ón
21
Si tal cosa o la otra
Estructura del if
a = ...
if a == 0:
print "Ojo con el valor de b"
b = 0
elif a > 100 or a < 0:
print "Error en el valor de a"
b = 0
else:
b = c / a
print b
7
0
0
2
Eso que hay después del if:
● or, and, not
● < > == != in is
● Todo evalua a Falso o Verdadero
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
22
i
c
c
u
d
o
r
t
n
I
Por cada uno
Estructura del for
>>> bichos = ["pulgas", "piojos", "cucarachas"]
>>> for bich in bichos:
... print "Mata" + bich
...
Matapulgas
Matapiojos
Matacucarachas
7
0
0
2
Si queremos la secuencia de números
>>> range(5)
[0, 1, 2, 3, 4]
>>> for i in range(5):
... print i**2
...
0
al
16
n
o
h
t
y
P
a
x
u
l
n
U
–
ón
i
c
c
u
d
o
r
t
n
I
23
Mientras tanto...
Estructura del while
>>> a = 0
>>> while a<1000:
... print a**5
... a += 3
0
243
7776
...
980159361278976
995009990004999
7
0
0
2
Al igual que el for, tiene:
● continue: Vuelve a empezar al principio del loop
● break: Corta el loop y sale
● else: Lo ejecuta si no cortamos con el break
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
24
i
c
c
u
d
o
r
t
n
I
Excepciones
Suceden cuando algo se escapa de lo normal
>>> 14 / 2
7
>>> 14 / 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
7
0
0
2
Podemos capturarlas
>>> try:
... print 14 / 0
... except ZeroDivisionError:
... print "error!"
...
error!
x
u
l
n
U
–
n
o
h
t
y
P
a
ón
25
i
c
c
u
d
o
r
t
n
I
Manejando lo excepcional
Es muy versátil
● try: Acá va el bloque de código que queremos supervisar
● except: Atrapa todo, o sólo lo que se le especifique
● else: Si no
Comentarios de: Introducción a Python (0)
No hay comentarios