Python
Primeros Pasos
Juan José Iglesias González –
[email protected]
Adrián Pérez de Castro –
[email protected]
Guión
Spam & Eggs
Why Python?
Let’s be friends!
Spam & Eggs
De cómo ciertos personajes influyen en uno de los
desarrollos más veteranos del software libre
Spam & Eggs
Autor: Guido Van Rossum
Instituto Nacional de Investigación
Matemática e Informática, Noruega
Mediados de los 80
Lenguaje ABC: enseñar
programación a no informáticos
ABC no tuvo repercusión
Spam & Eggs
Amoeba + Python = Python
Lenguaje de scripting para Amoeba
Basado en ABC
Nueva sintaxis de bloques
Tipos predefinidos
Python es mucho más fácil de
extender de forma modular
Spam & Eggs
Filosofía
Python debe ser divertido
Su nombre proviene de la serie de
televisión «Monty Python’s Flying
Circus»
Son habituales referencias al genial
grupo humorístico inglés al hablar
de Python 8^)
Más zen:
Why Python?
Razones, hechos y ejemplos de por qué puede ser
conveniente tener un reptil a mano
Why Python? – Hooola!!
Un ejemplo clásico
print “Hello world!”
clásico
o
u l
d
Otro ejemplo clásico
import sys
m ó
name = sys.argv
if len(name) == 2:
variable
identidad
i n d e x a d o
print “Hello “ + name[1]
else:
print “Hello random chorbo”
concat
bloque
!
Why Python? – Tipos
Todo son objetos – Incluso los que vienen de serie
o
d
o
t
m é
r
o
d
a
r
e
t
i
lst = [“spam”, “and”]
lst.append(3)
lst.append(“eggs”)
a
t
s
l i
for item in lst:
print item,
i n t r o
# We also have “while”
i = 0
while i < len(lst):
print lst[i],
t .
i += 1 # But not i++!!
polim.
n
e
d
n
i
Why Python? – Tipos
Todo son objetos – Incluso los que vienen de serie
h
s
a
h
hetero
t
s
a
c
d = { “eggs”: 3, “milk”: 1 }
d[“cornbeef”] = “some”
print “Supermarket List:”
for item in d:
print “–” * 3, d[item], item
mult.
c o mp re s .
d = dict(
[(x, x+1) for x in range(5)]
)
print repr(d)
pretty
rango
!
Why Python? – Lambda!
«Pitonización» funcional
?
e
c
l i
s
u
f
E
n !
BTBF
l = range(5, 15, 2) # Woahh!!
m = map(lambda x: x+1, l)
print repr(l)
«Pitonización» recursiva
def fact(n):
W A
if n == 0: return 1
else: return n * fact(n-1)
print fact(5)
call
Why Python? – OO
Tratando reptiles como objetos
cla se
d e f e c t o
h a s h
class Reptile:
def __init__(self, name=’Pitty’, **a):
self._name = name
self._attr = a
def y(self, name):
return self._attr.get(name)
def x(self): return self._name
a t r i b .
m é t o d o
o bj.
p = Reptile(‘Python’, age=5, eyes=’blue’)
q = Reptile(‘Boa’, age=’3’, length=2)
print p.x(), p.y(‘age’), p.y(‘eyes’)
print q.x(), q.y(‘age’), q.y(‘eyes’)
p._name = ‘Mutant–Python’
print p.x()
oculto?
None
Let’s be friends!
¿Miedo a estar sólo? Python tiene todas las respuestas
Let’s be friends! – Usos
En empresas
NASA
Yahoo, Google, Infoseek
Industrial Light & Magic, Pixar
Red Hat
Microsoft
Blade
Let’s be friends! – Tech
Módulos incorporados
Más de 200: REs, compresión,
serialización y persistencia
automáticas, servicios de red,
threads, codificación de archivos,
bases de datos, XML, ncurses, Tk,
audio, internacionalización, SGML,
interfaz con el sistema operativo,
números aleatorios, XDR, …
Además: módulos de terceros
Let’s be friends! – GUIs
Desarrollo de GUIs
Qt & KDE, GTK+ & Gnome
AWT & Swing (con Jython)
FOX, wxWindows, Tk, Cocoa (con
PyObjC), Win32, Windows.Forms (a
través de .NET)…
Más en la charla de programación
de GUIs con Python ;–)
Let’s be friends! – XREFs
Servicios web
XML–RPC, SOAP, servidor/cliente HTTP, mod_python, Zope…
Interoperabilidad
.NET, Jython (Java™), SWIG (C & C++), PyObjC (Cocoa), Corba…
Aplicaciones cliente/servidor
BitTorrent, Nicotine, PyMusique
Juegos
PyGame, PyDance
Gracias, Bryan
Comentarios de: Python - Primeros pasos (0)
No hay comentarios