際際滷

際際滷Share a Scribd company logo
INTRODUZIONE A PYTHON
                       Lezione 1
           Paolo Ferretti per Deltapromo
 URL corso: http://corso-deltapromo.paoloferretti.net/

             http://www.paoloferretti.net
               paolo@paoloferretti.net
PYTHON


 Python is a programming language that lets you work more
 quickly and integrate your systems more effectively. You can
 learn to use Python and see almost immediate gains in
 productivity and lower maintenance costs.
PERCH PYTHON

 Multi-piattaforma                   Velocit   di sviluppo

 Veloce                              Produttivit

   3xpi湛 veloce rispetto a           Mantenimento      del codice
    PHP o Ruby

   2x   pi湛 lento rispetto a Java

 Leggibilit   del codice
CHI USA PYTHON

 NASA                        Google

 Rackspace    (Hosting)      Thawte     (certi鍖cati digitali)

 Industrial
          Light and Design    Firaxis   Games (Civilization)
 (Star Wars)
                              Activision   (Call of Duty)
 Honeywell
                              http://www.python.org/
 Youtube                     about/quotes/
QUALE VERSIONE?

 Ramo     2.x                     Ramo    3.x

  il   pi湛 utilizzato              il   meno utilizzato

  massima    compatibilit con     scarsa  compatibilit con
   le librerie esistenti             librerie esistenti

  installatodi default su          non sempre installato di
   molte distribuzioni Linux,        default
   Solarie e Mac OS X
QUALE VERSIONE?


 Attualmente   竪 meglio sviluppare sul ramo 2.x

  Django, SQLAlchemy, Google App       Engine e tutte le
   principali librerie hanno la piena compatiblit

 竪  un ramo stabile e molte caratteristiche del ramo 3.x
   hanno subito un backport sul ramo 2.x
COME SI INSTALLA

 Su Windows

  installer   scaricabile da python.org

  sconsigliato

 Su   Linux

  normalmente       竪 preinstallato

  da   pacchetti precompilati o da sorgenti
COME SI INSTALLA


 Su   Mac OS X

  preinstallato

  macport

  sorgenti
DOCUMENTAZIONE



 Dal   sito uf鍖ciale Python

 Libro gratuito Dive into Python
 ( http://it.diveintopython.org/ )
SHELL

 Linterprete
            python, se lanciato da console senza argomenti,
 apre una shell
SHELL

 Il   prompt >>> indica che possiamo inziare a lavorare

 La    shell 竪 utile

    per   provare piccoli snippets di codice

    per   leggere la documentazione

        nome_funzione?
IPYTHON

 Lo   strumento che ogni sviluppatore Python deve avere

 Vantaggi

   colorazione   del codice

   autocompletamento

 Facilmente   installabile
INTRODUZIONE AL
   LINGUAGGIO
VARIABILI

 Linguaggio   dinamico

  itipi delle variabili vengono de鍖niti a runtime e possono
   variare

   una   variabile si de鍖nisce con

     nome_variabile    = valore
CONVENZIONI PER LA
         NOMENCLATURA
 Nonostante la tipizzazione dinamica, anche Python ha delle
 convenzioni per la nomenclatura (maggiori dettagli nella PEP8)

  COSTANTI_IN_MAIUSCOLO

  snake_case_in_underscore_per_variabili_normali, istanze    di
   oggetti, nomi di funzioni e moduli

  CamelCase   con prima lettera maiuscola per i nomi delle
   classi
PYTHON ENHANCEMENT
             PROPOSALS

 Il   loro acronimo 竪 PEP

 De鍖niscono     regole e convenzioni

 Si   trovano allindirizzo http://www.python.org/dev/peps/

 Alcune    tra le pi湛 famose sono le 1, 8, 20, 257, 3000
ESPRESSIONI ARITMETICHE


 Sono   molto simili a quelle che si scrivono a mano su carta

  base  = 50
   height = 20
   triangle_area = (width * height) / 2
ESPRESSIONI CONDIZIONALI


 ifespressione_booleana:
     fai qualcosa
  else:
     fai qualcosaltro
ESPRESSIONI BOOLEANE

 Espressioni   che ritornano True o False

 Qualche     esempio

  a   <b

  a   or b

  a   and b

  a   == b
LISTE

 In   Python non parliamo di array ma di liste

 Le   liste sono dinamiche

 Si   instanziano con

  l   = list()

  l   =[]
LISTE

 Si   scorrono facilmente

 Possono    essere concatenate con loperatore +

 Possono    contenere elementi di tipi diversi

  l   = [1, "Paolo", 3.14, [1, 2]]

 Con i metodi insert e append 竪 possibile inserire elementi ad
 un certo indice oppure appenderli alla 鍖ne della lista
LISTE

 Agli   elementi si pu嘆 accedere

   direttamente      con lindice: l[2] = 3.14

   con   gli slice

     l[1:]   = ['Paolo', 3.14, [1, 2]]

     l[2:4]   = [3.14, [1, 2]]

     l[:2]   = [1, 'Paolo']
TUPLE

 Una    tupla 竪 una lista che non si pu嘆 modi鍖care

 Si   instanzia con

  t    = tuple()

  t    = ()

 Ha    le stesse caratteristiche di una lista
INSIEMI

 Usati   per contenere una sequenza non ordinata di oggetti

 Si   instanziano con

  s    = set()

 Non     esistono indici

 Gli
    elementi possono essere aggiunti con il metodo add() e
 rimesso col metodo delete()
INSIEMI


 Gli   elementi non sono mai duplicati

 Supportano  unione (|), intersezione (&), differenza (-) e
 differenza simmetrica (^)

 Gli
    elementi possono essere aggiunti con il metodo add() e
 rimesso col metodo delete()
DIZIONARI

I dizionari sono array associativi che contengono oggetti
 indicizzati da chiavi

 Si   instanziano con

  d    = dict()

  d    = {}
DIZIONARI

 Accesso    agli elementi

   d[nome]

   d.get(nome)

 veri鍖ca   esistenza di una chiave

   if nome in   d
ITERAZIONI

 Ciclo    for

    for item in list:
        print item

 Nel   ciclo for non si gestiscono direttamente gli indici

 Ilciclo for itera su qualsiasi cosa implementata come un
  iteratore
ITERAZIONI


 Ciclo   while

   while espressione_booleana:
      fai qualcosa

 Poco    usato, normalmente si usa il for
FILE INPUT
 Molto   semplice e immediato

f = open(nome_鍖le, r)
 for line in f:
    print line
 f.close()

 Nuovo   metodo

  withopen(nome_鍖le, r) as f:
     for line in f:
        ...
FILE OUTPUT



 Lapertura del 鍖le avviene come per linput ma con w al
  posto di r

 si   usa il metodo write() per scrivere su 鍖le
STRINGHE
 Possono  essere chiuse tra apici singoli (), doppie virgolette ()
 e triple virgolette () o tripli apici ()

 Tra   apici singoli e virgolette non c竪 differenza

 Le
   triple virgolette e i tripli apici servono per le stringhe
 multiriga e per la documentazione

 Lestringhe sono liste di caratteri, quindi possiamo agire su di
 esse come se fossero liste

   Quindi    valgono concatenazioni, slice, ecc...
FUNZIONI


 Si   creano con

   def   nome_funzione(a, b):
         pass

 Opzionalmente    una funzione pu嘆 ritornare uno o pi湛 valori
 con listruzione return
FUNZIONI


 Una   funzione pu嘆 avere dei valori prede鍖niti per i parametri

  def   function(a = 10, b = 20)

 Possiamo   anche decidere lordine in cui chiamare i parametri

  function(b=2, a=4)
GENERATORI

 Sono come le funzioni, ma invece di restituire un singolo
 valore, restituiscono una sequenza di valori

 Usano   yield al posto di return

  def countdown(n):
      while n > 0:
         yield n
         n -= 1
GENERATORI



 Li possiamo chiamare come normali funzioni, per poi accedere
 allelemento successivo col metodo next()

 Possiamo   lavorarci sopra con un ciclo for
OGGETTI

 Tutti   i valori usati in un programma Python sono oggetti

   liste

   stringhe

   ecc...

 Possiamo     creare dei tipi di oggetti personalizzati
CLASSI

 Sono    tipi personalizzati

 Si   de鍖niscono con

   class  NomeClasse(object):
         def __init__(self):
           io sono il costuttore
            pass
         def metodo(self, a, b):
            return a * b
CLASSI

 Le   propriet possono essere de鍖nite con

  @property
   def proprieta(self):
      return self.__nome
   @proprieta.setter
   def proprieta(self, value):
      self.__name = value
CLASSI

 Loggetto   di una classe viene instanziato con

  a   = NomeClasse()

E   i metodi e le propriet vengono usati con

   a.metodo()

   a.proprieta   = Python
CLASSI


 Normalmente      ogni elemento della classe 竪 pubblico

 Ci   sono due livelli di elementi privati

  _    : privato per uso interno alla classe

   __   : privato, sconsigliato usarlo allesterno
ECCEZIONI

 Sono    il modo migliore per controllare il 鍖usso degli errori

 Possono    essere catturate con

  try:
     f = open(鍖lename.txt, r)
   except IOError as e:
     print e
ECCEZIONI

 Le   eccezioni possono anche essere sollevate con

  raise   IOException(Eccezione di IO)

 Possiamoanche creare le nostre eccezioni, 竪 suf鍖ciente fare
 una sottoclasse di Exception

  class  Mia Eccezione(Exception):
        pass
MODULI


 Si   richiamano con

   import    nome_modulo

   from   nome_modulo import nome_funzione

I   moduli sono funzioni, variabili e classi raccolti in un 鍖le
PACKAGES
I   packages sono collezioni di moduli

 Si   richiamano esattamente come i moduli

   import   package.modulo

   from   package import modulo

   from   package.modulo import funzione

 Un package 竪 una cartella contenente 鍖le .py e un 鍖le
 __init__.py

More Related Content

Corso Python Deltapromo lezione 1

  • 1. INTRODUZIONE A PYTHON Lezione 1 Paolo Ferretti per Deltapromo URL corso: http://corso-deltapromo.paoloferretti.net/ http://www.paoloferretti.net paolo@paoloferretti.net
  • 2. PYTHON Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs.
  • 3. PERCH PYTHON Multi-piattaforma Velocit di sviluppo Veloce Produttivit 3xpi湛 veloce rispetto a Mantenimento del codice PHP o Ruby 2x pi湛 lento rispetto a Java Leggibilit del codice
  • 4. CHI USA PYTHON NASA Google Rackspace (Hosting) Thawte (certi鍖cati digitali) Industrial Light and Design Firaxis Games (Civilization) (Star Wars) Activision (Call of Duty) Honeywell http://www.python.org/ Youtube about/quotes/
  • 5. QUALE VERSIONE? Ramo 2.x Ramo 3.x il pi湛 utilizzato il meno utilizzato massima compatibilit con scarsa compatibilit con le librerie esistenti librerie esistenti installatodi default su non sempre installato di molte distribuzioni Linux, default Solarie e Mac OS X
  • 6. QUALE VERSIONE? Attualmente 竪 meglio sviluppare sul ramo 2.x Django, SQLAlchemy, Google App Engine e tutte le principali librerie hanno la piena compatiblit 竪 un ramo stabile e molte caratteristiche del ramo 3.x hanno subito un backport sul ramo 2.x
  • 7. COME SI INSTALLA Su Windows installer scaricabile da python.org sconsigliato Su Linux normalmente 竪 preinstallato da pacchetti precompilati o da sorgenti
  • 8. COME SI INSTALLA Su Mac OS X preinstallato macport sorgenti
  • 9. DOCUMENTAZIONE Dal sito uf鍖ciale Python Libro gratuito Dive into Python ( http://it.diveintopython.org/ )
  • 10. SHELL Linterprete python, se lanciato da console senza argomenti, apre una shell
  • 11. SHELL Il prompt >>> indica che possiamo inziare a lavorare La shell 竪 utile per provare piccoli snippets di codice per leggere la documentazione nome_funzione?
  • 12. IPYTHON Lo strumento che ogni sviluppatore Python deve avere Vantaggi colorazione del codice autocompletamento Facilmente installabile
  • 13. INTRODUZIONE AL LINGUAGGIO
  • 14. VARIABILI Linguaggio dinamico itipi delle variabili vengono de鍖niti a runtime e possono variare una variabile si de鍖nisce con nome_variabile = valore
  • 15. CONVENZIONI PER LA NOMENCLATURA Nonostante la tipizzazione dinamica, anche Python ha delle convenzioni per la nomenclatura (maggiori dettagli nella PEP8) COSTANTI_IN_MAIUSCOLO snake_case_in_underscore_per_variabili_normali, istanze di oggetti, nomi di funzioni e moduli CamelCase con prima lettera maiuscola per i nomi delle classi
  • 16. PYTHON ENHANCEMENT PROPOSALS Il loro acronimo 竪 PEP De鍖niscono regole e convenzioni Si trovano allindirizzo http://www.python.org/dev/peps/ Alcune tra le pi湛 famose sono le 1, 8, 20, 257, 3000
  • 17. ESPRESSIONI ARITMETICHE Sono molto simili a quelle che si scrivono a mano su carta base = 50 height = 20 triangle_area = (width * height) / 2
  • 18. ESPRESSIONI CONDIZIONALI ifespressione_booleana: fai qualcosa else: fai qualcosaltro
  • 19. ESPRESSIONI BOOLEANE Espressioni che ritornano True o False Qualche esempio a <b a or b a and b a == b
  • 20. LISTE In Python non parliamo di array ma di liste Le liste sono dinamiche Si instanziano con l = list() l =[]
  • 21. LISTE Si scorrono facilmente Possono essere concatenate con loperatore + Possono contenere elementi di tipi diversi l = [1, "Paolo", 3.14, [1, 2]] Con i metodi insert e append 竪 possibile inserire elementi ad un certo indice oppure appenderli alla 鍖ne della lista
  • 22. LISTE Agli elementi si pu嘆 accedere direttamente con lindice: l[2] = 3.14 con gli slice l[1:] = ['Paolo', 3.14, [1, 2]] l[2:4] = [3.14, [1, 2]] l[:2] = [1, 'Paolo']
  • 23. TUPLE Una tupla 竪 una lista che non si pu嘆 modi鍖care Si instanzia con t = tuple() t = () Ha le stesse caratteristiche di una lista
  • 24. INSIEMI Usati per contenere una sequenza non ordinata di oggetti Si instanziano con s = set() Non esistono indici Gli elementi possono essere aggiunti con il metodo add() e rimesso col metodo delete()
  • 25. INSIEMI Gli elementi non sono mai duplicati Supportano unione (|), intersezione (&), differenza (-) e differenza simmetrica (^) Gli elementi possono essere aggiunti con il metodo add() e rimesso col metodo delete()
  • 26. DIZIONARI I dizionari sono array associativi che contengono oggetti indicizzati da chiavi Si instanziano con d = dict() d = {}
  • 27. DIZIONARI Accesso agli elementi d[nome] d.get(nome) veri鍖ca esistenza di una chiave if nome in d
  • 28. ITERAZIONI Ciclo for for item in list: print item Nel ciclo for non si gestiscono direttamente gli indici Ilciclo for itera su qualsiasi cosa implementata come un iteratore
  • 29. ITERAZIONI Ciclo while while espressione_booleana: fai qualcosa Poco usato, normalmente si usa il for
  • 30. FILE INPUT Molto semplice e immediato f = open(nome_鍖le, r) for line in f: print line f.close() Nuovo metodo withopen(nome_鍖le, r) as f: for line in f: ...
  • 31. FILE OUTPUT Lapertura del 鍖le avviene come per linput ma con w al posto di r si usa il metodo write() per scrivere su 鍖le
  • 32. STRINGHE Possono essere chiuse tra apici singoli (), doppie virgolette () e triple virgolette () o tripli apici () Tra apici singoli e virgolette non c竪 differenza Le triple virgolette e i tripli apici servono per le stringhe multiriga e per la documentazione Lestringhe sono liste di caratteri, quindi possiamo agire su di esse come se fossero liste Quindi valgono concatenazioni, slice, ecc...
  • 33. FUNZIONI Si creano con def nome_funzione(a, b): pass Opzionalmente una funzione pu嘆 ritornare uno o pi湛 valori con listruzione return
  • 34. FUNZIONI Una funzione pu嘆 avere dei valori prede鍖niti per i parametri def function(a = 10, b = 20) Possiamo anche decidere lordine in cui chiamare i parametri function(b=2, a=4)
  • 35. GENERATORI Sono come le funzioni, ma invece di restituire un singolo valore, restituiscono una sequenza di valori Usano yield al posto di return def countdown(n): while n > 0: yield n n -= 1
  • 36. GENERATORI Li possiamo chiamare come normali funzioni, per poi accedere allelemento successivo col metodo next() Possiamo lavorarci sopra con un ciclo for
  • 37. OGGETTI Tutti i valori usati in un programma Python sono oggetti liste stringhe ecc... Possiamo creare dei tipi di oggetti personalizzati
  • 38. CLASSI Sono tipi personalizzati Si de鍖niscono con class NomeClasse(object): def __init__(self): io sono il costuttore pass def metodo(self, a, b): return a * b
  • 39. CLASSI Le propriet possono essere de鍖nite con @property def proprieta(self): return self.__nome @proprieta.setter def proprieta(self, value): self.__name = value
  • 40. CLASSI Loggetto di una classe viene instanziato con a = NomeClasse() E i metodi e le propriet vengono usati con a.metodo() a.proprieta = Python
  • 41. CLASSI Normalmente ogni elemento della classe 竪 pubblico Ci sono due livelli di elementi privati _ : privato per uso interno alla classe __ : privato, sconsigliato usarlo allesterno
  • 42. ECCEZIONI Sono il modo migliore per controllare il 鍖usso degli errori Possono essere catturate con try: f = open(鍖lename.txt, r) except IOError as e: print e
  • 43. ECCEZIONI Le eccezioni possono anche essere sollevate con raise IOException(Eccezione di IO) Possiamoanche creare le nostre eccezioni, 竪 suf鍖ciente fare una sottoclasse di Exception class Mia Eccezione(Exception): pass
  • 44. MODULI Si richiamano con import nome_modulo from nome_modulo import nome_funzione I moduli sono funzioni, variabili e classi raccolti in un 鍖le
  • 45. PACKAGES I packages sono collezioni di moduli Si richiamano esattamente come i moduli import package.modulo from package import modulo from package.modulo import funzione Un package 竪 una cartella contenente 鍖le .py e un 鍖le __init__.py

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n