SlideShare a Scribd company logo
1 of 39
Download to read offline
GDG MALLORCA




               Introducció a Python


                LIFE IS SHORT – YOU NEED 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: aaloy@apsl.net




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         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
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
    #!/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
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
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
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
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
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?




www.apsl.net                                  7.3.2013

More Related Content

Similar to Introducció a Python

Internet david lorente
Internet david lorenteInternet david lorente
Internet david lorenteDavid Lorente
 
OP electrònica (metodologies)
OP electrònica (metodologies)OP electrònica (metodologies)
OP electrònica (metodologies)Antoni Ubieto
 
Diapositives projecte 1
Diapositives projecte 1Diapositives projecte 1
Diapositives projecte 1belenizbe
 
Manual de usuari per comprimir i descomprimir archius
Manual de usuari per comprimir i descomprimir archiusManual de usuari per comprimir i descomprimir archius
Manual de usuari per comprimir i descomprimir archiusmartin_guissona
 
JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#Edin Kapic
 
Practiques materia actic
Practiques materia acticPractiques materia actic
Practiques materia acticaboussif
 
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Iniciativa Barcelona Open Data
 
Salcedo victor uf4_p01glpi+ocs_inventory
Salcedo victor uf4_p01glpi+ocs_inventorySalcedo victor uf4_p01glpi+ocs_inventory
Salcedo victor uf4_p01glpi+ocs_inventoryvictorsalcedo92
 
Presentació pfc disseny mòdul knx
Presentació pfc disseny mòdul knxPresentació pfc disseny mòdul knx
Presentació pfc disseny mòdul knxTOMAS GARCIA VERDUGO
 
Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Àlex Corretgé
 
Crypto Party BCN
Crypto Party BCNCrypto Party BCN
Crypto Party BCNjordi.ipa
 
Resum
ResumResum
Resumcfgmi
 
Curs Linux Sessió 1
Curs Linux Sessió 1Curs Linux Sessió 1
Curs Linux Sessió 1Núria Alonso
 
Linux Presentacio 1
Linux Presentacio 1Linux Presentacio 1
Linux Presentacio 1ESMagdalenes
 
Pujante aaron 01_gestorincidenciesocs
Pujante aaron 01_gestorincidenciesocsPujante aaron 01_gestorincidenciesocs
Pujante aaron 01_gestorincidenciesocsAaron Pujante
 

Similar to Introducció a Python (20)

Internet david lorente
Internet david lorenteInternet david lorente
Internet david lorente
 
OP electrònica (metodologies)
OP electrònica (metodologies)OP electrònica (metodologies)
OP electrònica (metodologies)
 
Diapositives projecte 1
Diapositives projecte 1Diapositives projecte 1
Diapositives projecte 1
 
Manual de usuari per comprimir i descomprimir archius
Manual de usuari per comprimir i descomprimir archiusManual de usuari per comprimir i descomprimir archius
Manual de usuari per comprimir i descomprimir archius
 
Tema1
Tema1Tema1
Tema1
 
Linkat
LinkatLinkat
Linkat
 
JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#JavaScript per a desenvolupadors de C#
JavaScript per a desenvolupadors de C#
 
Curs 1.5 Publicació de Dades
Curs 1.5 Publicació de DadesCurs 1.5 Publicació de Dades
Curs 1.5 Publicació de Dades
 
Practiques materia actic
Practiques materia acticPractiques materia actic
Practiques materia actic
 
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
Sessió 4 Tècnics - Programa formatiu Dades Obertes per Entitats sense Ànim de...
 
Salcedo victor uf4_p01glpi+ocs_inventory
Salcedo victor uf4_p01glpi+ocs_inventorySalcedo victor uf4_p01glpi+ocs_inventory
Salcedo victor uf4_p01glpi+ocs_inventory
 
Presentació pfc disseny mòdul knx
Presentació pfc disseny mòdul knxPresentació pfc disseny mòdul knx
Presentació pfc disseny mòdul knx
 
Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014
 
Ri03 programacio basica_robots
Ri03 programacio basica_robotsRi03 programacio basica_robots
Ri03 programacio basica_robots
 
Crypto Party BCN
Crypto Party BCNCrypto Party BCN
Crypto Party BCN
 
Resum
ResumResum
Resum
 
Curs Linux Sessió 1
Curs Linux Sessió 1Curs Linux Sessió 1
Curs Linux Sessió 1
 
Linux Presentacio 1
Linux Presentacio 1Linux Presentacio 1
Linux Presentacio 1
 
Pujante aaron 01_gestorincidenciesocs
Pujante aaron 01_gestorincidenciesocsPujante aaron 01_gestorincidenciesocs
Pujante aaron 01_gestorincidenciesocs
 
Taller Colinux
Taller ColinuxTaller Colinux
Taller Colinux
 

Introducció a Python

  • 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
  • 11. Comencem! ● python Editors: ● Ninja-Ide ● Eclipse + PyDev ● Vim, Gvim ● Emacs ● Ulipad ● Notepad++ ● pyCharm www.apsl.net 7.3.2013
  • 12. Però abans un poc de Zen www.apsl.net 7.3.2013
  • 13. Ara sí: Python com a calculadora 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
  • 15. ipython provau el help i el dir 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
  • 24. Fent feina amb diccionaris 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