1. GDG MALLORCA
Introducció a Python
LIFE IS SHORT – YOU NEED PYTHON!
www.apsl.net 7.3.2013
2. CONTINGUTS
● Qui és aquest?
● Què és APSL?
● Què és això del Python?
● Preguntes ...
www.apsl.net 7.3.2013
3. Sobre mi
● Gerent d'APSL
● Abans cap de projecte web a TUI España
● Blog: http://trespams.com
● Twitter: aaloy
● Correu: aaloy@apsl.net
www.apsl.net 7.3.2013
4. Sobre APSL
● http://apsl.net
● Empresa dedicada a la programació a mida
● Python, Django i Linux
● Sorgim de la incubadora del Parc Bit
● Ara al polígon de Son Castelló
● Passam de 2 a 8 persones
www.apsl.net 7.3.2013
6. Què és Python
● Un llenguatge interpretat orientat a objectes
● Una eina de desenvolupament ràpid
● Amb una sintaxi clara i ben documentada
● Lliure i multiplataforma
● Creat per Guido Van Rossum al 1991
● I que pren el nom dels Monty Python Flying
Circus
● Amb llibreries per a pràcticament qualsevol
cosa
www.apsl.net 7.3.2013
7. Per a què serveix?
● Administració de sistemes
● Interfícies gràfiques
● Programació web
● Càlcul numèric
● Aplicacions amb accés a BD
● Integració (glue language)
● Prototipat
● Desenvolupament ràpid i àgil
www.apsl.net 7.3.2013
8. Mancances
● Sistemes de temps real
● Sistemes amb temps de processament crítics
● No es encara tan ràpid com alguns llenguatges
compilats (PyPy!)
● El GIL pot ser un problema
Però sempre hi ha maneres de fer-ho si convé!
www.apsl.net 7.3.2013
9. Qui el fa servir?
● Google
● Dropbox
● Instagram
● Mozilla
● Pinterest
● Disqus
● Zope, Plone, Django
● Distribucions Linux (RH, Ubuntu, )
● http://wiki.python.org/moin/OrganizationsUsingPython
www.apsl.net 7.3.2013
10. Instal·lant Python
● Lloc principal: http://python.org
– Per Windows
– Per Linux ja ve de sèrie
● Eines i utilitats:
– IPython
– easy_install
– Pip
– Yolk
– Més a Trespams (ecosistema-python)
www.apsl.net 7.3.2013
14. Una consola millor: ipython
● Administració de sistemes
● Consola més ”amigable”
● Autocompletat
● I un munt de drecers
● És massa bo per no fer-ho servir!
www.apsl.net 7.3.2013
16. Parlem ara de la identació
● Forma part del llenguatge
● Força la legibilitat
● No té més problemes que pensar a configurar
el nostre editor:
– tabs a espais
– 4 espais per tab
– i ja de pàs posau-ho com utf-8
– i retorns tipus unix
www.apsl.net 7.3.2013
18. I tot és un objecte!
● len(”tot és un objecte”)
● ”hola”.split('o')
● (3+4j).real
● Feis dir(”hola”)
● 5.3.is_integer()
www.apsl.net 7.3.2013
19. Cadenes i Slice
● Les cadenes són immutables
● Podem accedir als seus elements tractact-les
com a vectors
● L'slicing ens permet seleccionar un sols
caràcter, o un grup
– cadena[0]
– cadena[1:3]
– cadena[-1]
www.apsl.net 7.3.2013
21. Llistes i tuples
● Les llistes són mutables
● Les tuples són inmutables
● Poden contenir qualsevol objecte
● Repetesc: qualsevol
www.apsl.net 7.3.2013
22. Què podem fer amb les llistes?
● Sumar (+)
● Seleccionar-ne un subconjunt (slice)
● Esborrar-ne elements (del llista[x])
● Ordenar-les amb llista.sort()
www.apsl.net 7.3.2013
23. Diccionaris
● Es defineix amb dict
● O bé creant-lo:
dir(diccionari)
www.apsl.net 7.3.2013
25. Estuctures de control
● IF if condicio:
#
elif condicio:
#
elif condicio:
#
else:
#
● No hi ha sèntencies case o switch!
● Amb l'estructura de l'if i els diccionaris no és
necessària
www.apsl.net 7.3.2013
27. Un parell de tipus més
● Conjunts: Set
● None
● True
● False
● A efectes de comparació és fals: None, False,
zero o buid
www.apsl.net 7.3.2013
28. for
● Ens permet recorre llistes o qualsevol cosa que
permeti la iteració (recordau el duck typing?)
for element in llista:
codi
else:
codi
break i continue ens permeten modificar-ne el fluxe
www.apsl.net 7.3.2013
30. While
while condicio:
codi
else:
codi
www.apsl.net 7.3.2013
31. Cream un arxiu
● Podem crear programes i guardar-los a un
arxiu
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# autor:
# licence:
if __name__ == '__main__':
pass
● Configuram l'editor: tabs a espais
● Tabs a 4 espais
● UTF-8 i salt de línia Unix
www.apsl.net 7.3.2013
32. Funcions
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
Definició de la funció
def fibo(n):
"""Calcula el número indicat per n de la successió de
fibonnaci.
An = An-1 + An-2
Paràmetres: n és un nombre enter. documentació
Nota: la seqüència comença pel zero.
"""
if n == 1:
return 1
elif n==0:
return 0 retorn
else:
return fibo(n-1)+fibo(n-2)
if __name__ == '__main__':
print "fibonacci 2 %s: " % fibo(2) execució
print fibo(3)
print fibo(10)
www.apsl.net 7.3.2013
33. POO: classes
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class Prova(object): constructor
"Classe de prova"
def __init__(self, a, b):
self.a = a atributs
self.b = b
mètode
def suma(self):
return self.a+self.b
if __name__ == '__main__':
p = Prova(2, 5)
print p.suma()
p = Prova('hola', ' com anam')
print p.suma()
www.apsl.net 7.3.2013
34. POO (2)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class Prova(object):
"Classe de prova"
VALOR = 10
def __init__(self, a, b):
self.a = a
self.b = b
def suma(self):
"mètode lligat a la instància"
return self.a+self.b mètode de classe
estàtic
@classmethod
def where_am_i(cls):
"Exemple de mètode estàtic. Mètode de classe"
return __name__
@property
propietat
def major(self):
if self.a >= self.b:
return self.a
else:
return self.b
www.apsl.net 7.3.2013
35. Els mòduls
● from math import *
● from math import sin
● import math
sin(10) en els dos primers casos
math.sin(10) en el segon
www.apsl.net 7.3.2013
36. Què ens falta?
● Herència i polimorfisme
● Decoradors, generadors, iteradors
● Comprehensió de llistes, unicode, ...
● Manipulació d'arxius
● Creació de mòduls, instrospecció
● Excepcions, try...finally
● Estudi de les llibreries bàsiques
● Depuració
www.apsl.net 7.3.2013
37. Però ja tenim el 80%
● Amb això ja podem entendre el codi
● Començar a crear scripts
● Llegir la documentació
#11900 You cannot just paste code with
no understanding of what is going on
and expect it to work.
#11917 Read. Learn.
Evolve.
Codis d'error de Mark Jason Dominus
www.apsl.net 7.3.2013
38. Recordau!
● Convé configurar l'editor
● help i dir són els vostres amics
● Python NO es Java, no és PHP, té la seva
manera de programar
● En cas de dubte consultau el Zen
● I seguiu les normes d'estil PEP-8
● I dues paraules curtes:
– DRY
– KISS
www.apsl.net 7.3.2013
39. Fins aquí hem arribat!
Gràcies!
Alguna pregunta?
www.apsl.net 7.3.2013