Download - Introducció a Python
www.apsl.net 7.3.2013
GDG MALLORCA
LIFE IS SHORT – YOU NEED PYTHON!
Introducció a Python
www.apsl.net 7.3.2013
CONTINGUTS
● Qui és aquest?● Què és APSL?● Què és això del Python?● Preguntes ...
www.apsl.net 7.3.2013
Sobre mi
● Gerent d'APSL● Abans cap de projecte web a TUI España● Blog: http://trespams.com● Twitter: aaloy● Correu: [email protected]
www.apsl.net 7.3.2013
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
Avis de RANT!
www.apsl.net 7.3.2013
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
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
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
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
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
Comencem!
● python
Editors:● Ninja-Ide● Eclipse + PyDev● Vim, Gvim● Emacs● Ulipad● Notepad++● pyCharm
www.apsl.net 7.3.2013
Però abans un poc de Zen
www.apsl.net 7.3.2013
Ara sí: Python com a calculadora
www.apsl.net 7.3.2013
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
ipython
provau el help i el dir
www.apsl.net 7.3.2013
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
Cadenes
www.apsl.net 7.3.2013
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
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
Exemples amb cadenes
www.apsl.net 7.3.2013
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
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
Diccionaris
● Es defineix amb dict● O bé creant-lo:
dir(diccionari)
www.apsl.net 7.3.2013
Fent feina amb diccionaris
www.apsl.net 7.3.2013
Estuctures de control
● IF
● No hi ha sèntencies case o switch!● Amb l'estructura de l'if i els diccionaris no és
necessària
if condicio: # elif condicio: #elif condicio: #else: #
www.apsl.net 7.3.2013
Exemples amb if
www.apsl.net 7.3.2013
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
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
Exemples amb FOR
www.apsl.net 7.3.2013
While
while condicio:
codi
else:
codi
www.apsl.net 7.3.2013
Cream un arxiu
● Podem crear programes i guardar-los a un arxiu
● Configuram l'editor: tabs a espais● Tabs a 4 espais● UTF-8 i salt de línia Unix
#!/usr/bin/env python# -*- coding: UTF-8 -*-# autor:# licence:
if __name__ == '__main__': pass
www.apsl.net 7.3.2013
Funcions#!/usr/bin/env python# -*- coding: UTF-8 -*-
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. Nota: la seqüència comença pel zero. """ if n == 1: return 1 elif n==0: return 0 else: return fibo(n-1)+fibo(n-2)
if __name__ == '__main__': print "fibonacci 2 %s: " % fibo(2) print fibo(3) print fibo(10)
Definició de la funció
documentació
retorn
execució
www.apsl.net 7.3.2013
POO: classes
#!/usr/bin/env python# -*- coding: UTF-8 -*-
class Prova(object): "Classe de prova" def __init__(self, a, b): self.a = a self.b = b
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()
constructor
atributs
mètode
www.apsl.net 7.3.2013
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 @classmethod def where_am_i(cls): "Exemple de mètode estàtic. Mètode de classe" return __name__ @property def major(self): if self.a >= self.b: return self.a else: return self.b
mètode de classeestàtic
propietat
www.apsl.net 7.3.2013
Els mòduls
● from math import *● from math import sin● import math
sin(10) en els dos primers casosmath.sin(10) en el segon
www.apsl.net 7.3.2013
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
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
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
Fins aquí hem arribat!
Gràcies!
Alguna pregunta?