introducció a python
DESCRIPTION
06/03/2013 Introducció a Python Antony Aloy Gerent de http://apsl.net. #GDGMallorca 2013TRANSCRIPT
![Page 1: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/1.jpg)
www.apsl.net 7.3.2013
GDG MALLORCA
LIFE IS SHORT – YOU NEED PYTHON!
Introducció a Python
![Page 2: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/2.jpg)
www.apsl.net 7.3.2013
CONTINGUTS
● Qui és aquest?● Què és APSL?● Què és això del Python?● Preguntes ...
![Page 3: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/3.jpg)
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]
![Page 4: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/4.jpg)
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
![Page 5: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/5.jpg)
www.apsl.net 7.3.2013
Avis de RANT!
![Page 6: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/6.jpg)
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
![Page 7: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/7.jpg)
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
![Page 8: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/8.jpg)
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é!
![Page 9: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/9.jpg)
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
![Page 10: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/10.jpg)
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)
![Page 11: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/11.jpg)
www.apsl.net 7.3.2013
Comencem!
● python
Editors:● Ninja-Ide● Eclipse + PyDev● Vim, Gvim● Emacs● Ulipad● Notepad++● pyCharm
![Page 12: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/12.jpg)
www.apsl.net 7.3.2013
Però abans un poc de Zen
![Page 13: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/13.jpg)
www.apsl.net 7.3.2013
Ara sí: Python com a calculadora
![Page 14: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/14.jpg)
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!
![Page 15: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/15.jpg)
www.apsl.net 7.3.2013
ipython
provau el help i el dir
![Page 16: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/16.jpg)
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
![Page 17: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/17.jpg)
www.apsl.net 7.3.2013
Cadenes
![Page 18: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/18.jpg)
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()
![Page 19: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/19.jpg)
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]
![Page 20: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/20.jpg)
www.apsl.net 7.3.2013
Exemples amb cadenes
![Page 21: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/21.jpg)
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
![Page 22: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/22.jpg)
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()
![Page 23: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/23.jpg)
www.apsl.net 7.3.2013
Diccionaris
● Es defineix amb dict● O bé creant-lo:
dir(diccionari)
![Page 24: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/24.jpg)
www.apsl.net 7.3.2013
Fent feina amb diccionaris
![Page 25: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/25.jpg)
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: #
![Page 26: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/26.jpg)
www.apsl.net 7.3.2013
Exemples amb if
![Page 27: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/27.jpg)
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
![Page 28: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/28.jpg)
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
![Page 29: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/29.jpg)
www.apsl.net 7.3.2013
Exemples amb FOR
![Page 30: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/30.jpg)
www.apsl.net 7.3.2013
While
while condicio:
codi
else:
codi
![Page 31: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/31.jpg)
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
![Page 32: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/32.jpg)
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ó
![Page 33: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/33.jpg)
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
![Page 34: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/34.jpg)
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
![Page 35: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/35.jpg)
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
![Page 36: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/36.jpg)
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ó
![Page 37: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/37.jpg)
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
![Page 38: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/38.jpg)
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
![Page 39: Introducció a Python](https://reader034.vdocuments.mx/reader034/viewer/2022042715/5588f7d6d8b42abd418b46e9/html5/thumbnails/39.jpg)
www.apsl.net 7.3.2013
Fins aquí hem arribat!
Gràcies!
Alguna pregunta?