De 0 a Python en 40 minutos(tranquilos que no pica)
Python es:
• Un lenguaje de programacion de alto nivel
• Dinamico
• Multiparadigma (funcional y OO)
• Multiplataforma
• Un tipo de serpiente
Sirve para:
• Aplicaciones de escritorio y consola
(QT, GTK+,wxWidgets, etc)
• Scripting de aplicaciones en otros lenguajes
(Jython, IronPython, etc)
• System scripting
• Aplicaciones y sistemas web
• Recuperar el placer de programar
Algunas caracteristicas:
• Gratis y Libre
( y Open Source, todo por el mismo precio)
• Maduro (casi 20 años)
• Diseño minimalista, elegante y robusto
• Facil de aprender (se lee como pseudocodigo)
• Expremadamente portable
(Unix, Windows, Mac, Amiga, BeOS, Win/CE, DOS, OS/2, VMS, Cray, y muchas otras)
Que tiene de interesante?
• Alto poder expresivo
• Potente soporte de listas y diccionarios
• Modo interactivo
Listas y diccionarios
lista=*1,2,3,’cuatro’,objeto.metodo,*‘una’,’lista’,’anidada’++
Diccionario=,‘clave’:’valor’,1:*‘a’,’b’,’c’+,’lista’:lista}
eventos=,‘onClick’: window.show, ’onESC’:window.close}
>>>evento=‘Click’
>>>eventos.get(‘on’+evento)()
List Comprehension(Listas por comprencion)
• Permite definir listas sin declarar explicitamente sucontenido
[<expresion> for <valor> in <coleccion> if <condicion>]
Por ej:>>> [n for n in range(10) if n % 2 == 0 ] [0, 2, 4, 6, 8] >>> [n*n for n in range(5)] [0, 1, 4, 9, 16] >>>def esPar(n): return ((n%2) == 0) >>> [ n for n in range(10) if isPar(n) ] [0, 2, 4, 6, 8]
Generadores
def primos():
n = 2
listaPrimos = []
while True:
if not any(n % f == 0 for f in listaPrimos):
yield n listaPrimos.append(n) n += 1
Y para que sirve?
• En Python todo es un diccionario
• Por ej, los archivos:
>>archivo=open(“ texto.txt”)
>>for (linea in archivo):
print(linea)
Los objetos tambien pueden verse asi…
Tirandose de cabeza: listas en accionObjetivo: insertar en una base de datos el contenido de un archivo CSV
hubicado en un sitio web
import MySQLdb
conn = MySQLdb.connect (host = "localhost", user = "testuser",
passwd = "testpass", db = "test")
ejecutar=conn.cursor().execute
def insertar(nombre,apellido,email):
ejecutar(“INSERT INTO gente(“+nombre+’,’+apellido+’,’email+’)’)
datos= urlopen("http://misitio.com/datos.csv")
for (linea in datos):
map(insertar,linea.split(“,”))
cursor.close ()
conn.close ()
Epa!
Modo interactivoimport mechanize
br = mechanize.Browser()
br.open("http://www.veraz.com.ar/") # y ahora???
>>>br.select_form(name=“login_form")
#recibo un error informando que el formulario no existe
>>>br.open("http://www.veraz.com.ar/login") #el form estaba en un frame
>>>br.select_form(name=“login_form") #ahora si anda
>>>br*“user"+ = “elusuario“
>>>br*“password"+ = “laclave“
>>>respuesta = br.submit()
>>>print respuesta.geturl() # queria ir aca?
>>>respuesta=br.follow_link(“continuar“)
>>>print respuesta .read() #veo el HTML de la pagina a donde me mando
>>>archivo = file('test.html', 'w')
>>>archivo.write(respuesta.read())
>>>archivo.close()
Te quiero ver haciendo esto en
C++ o Java…(si podes…)
Duck Typing
“Si se ve como un pato, se mueve como un pato y suena como un pato, entonces debe ser un pato.”
Ejemploclass TorresGemelas
def explotar():
print(“PUM!!”)
class EnanoEnfurecido
def explotar():
print(“Callate gil!”)
def reventar(cosa):cosa.explotar()
>>reventar(TorresGemelas)PUM!!>>reventar(EnanoEnfurecido)Callate Gil!
Ejemplos de uso
Proyectos grosos
• Youtube
• Gmail
• GoogleGroups
• GoogleMaps
Aplicaciones:•BitTorrent•Bazaar•Mercurial•YUM •Portage•Trac
Juegos:•Frets on Fire•Civilization 4•Battlefield 2•Eve Online
Como lenguaje de scripting:
•Blender•Maya•Poser•Inkscape•GIMP
•Paint Shop Pro•Amarok•Totem•VIM
Influencia en otros lenguajes
• ECMAScritp incorporo iteradores, generadores, y list comprehensions
• Groovy surgio para llevar la filosofia de Python a Java
• Ocaml tiene una sintaxis opcional, llamada“twt” (The Whitespace Thing), inspirada porPython y Haskell
Mas informacion
• Sitio oficial de Python: www.python.org
• Grupo de usuarios PyAr www.python.org.ar
Preguntas
Top Related