39
www.apsl.net 7.3.2013 GDG MALLORCA LIFE IS SHORT – YOU NEED PYTHON! Introducció a Python

Introducció a Python

Embed Size (px)

DESCRIPTION

06/03/2013 Introducció a Python Antony Aloy Gerent de http://apsl.net. #GDGMallorca 2013

Citation preview

Page 1: Introducció a Python

www.apsl.net 7.3.2013

GDG MALLORCA

LIFE IS SHORT – YOU NEED PYTHON!

Introducció a Python

Page 2: Introducció a Python

www.apsl.net 7.3.2013

CONTINGUTS

● Qui és aquest?● Què és APSL?● Què és això del Python?● Preguntes ...

Page 3: Introducció a Python

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

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

www.apsl.net 7.3.2013

Avis de RANT!

Page 6: Introducció a Python

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

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

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

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

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

www.apsl.net 7.3.2013

Comencem!

● python

Editors:● Ninja-Ide● Eclipse + PyDev● Vim, Gvim● Emacs● Ulipad● Notepad++● pyCharm

Page 12: Introducció a Python

www.apsl.net 7.3.2013

Però abans un poc de Zen

Page 13: Introducció a Python

www.apsl.net 7.3.2013

Ara sí: Python com a calculadora

Page 14: Introducció a Python

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

www.apsl.net 7.3.2013

ipython

provau el help i el dir

Page 16: Introducció a Python

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

www.apsl.net 7.3.2013

Cadenes

Page 18: Introducció a Python

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

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

www.apsl.net 7.3.2013

Exemples amb cadenes

Page 21: Introducció a Python

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

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

www.apsl.net 7.3.2013

Diccionaris

● Es defineix amb dict● O bé creant-lo:

dir(diccionari)

Page 24: Introducció a Python

www.apsl.net 7.3.2013

Fent feina amb diccionaris

Page 25: Introducció a Python

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

www.apsl.net 7.3.2013

Exemples amb if

Page 27: Introducció a Python

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

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

www.apsl.net 7.3.2013

Exemples amb FOR

Page 30: Introducció a Python

www.apsl.net 7.3.2013

While

while condicio:

codi

else:

codi

Page 31: Introducció a Python

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

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

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

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

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

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

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

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

www.apsl.net 7.3.2013

Fins aquí hem arribat!

Gràcies!

Alguna pregunta?