SlideShare a Scribd company logo
1 of 45
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     (certificati 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 ufficiale Python

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

• L’interprete
            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 definiti a runtime e possono
   variare

  • una   variabile si definisce 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

• Definiscono     regole e convenzioni

• Si   trovano all’indirizzo 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 qualcos’altro
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 l’operatore +

• 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 fine della lista
LISTE

• Agli   elementi si può accedere

  • direttamente      con l’indice: 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ò modificare

• 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”)

• verifica   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_file”, “r”)
 for line in f:
    print line
 f.close()

• Nuovo   metodo

 • withopen(“nome_file”, “r”) as f:
     for line in f:
        ...
FILE OUTPUT



• L’apertura del file avviene come per l’input ma con “w” al
  posto di “r”

• si   usa il metodo write() per scrivere su file
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 l’istruzione return
FUNZIONI


• Una   funzione può avere dei valori predefiniti per i parametri

 • def   function(a = 10, b = 20)

• Possiamo   anche decidere l’ordine 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
 all’elemento 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   definiscono 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 definite con

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

• L’oggetto   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 all’esterno
ECCEZIONI

• Sono    il modo migliore per controllare il flusso degli errori

• Possono    essere catturate con

 • try:
     f = open(“filename.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, è sufficiente 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 file
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 file .py e un file
 __init__.py

More Related Content

What's hot

Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéEdmondo Porcu
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - TheoryNaLUG
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, javaMatteo Baccan
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsJUG Genova
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourserik0
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggettiMajong DevJfu
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazioneMajong DevJfu
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusionePiero Fraternali
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object OrientedManuel Scapolan
 

What's hot (20)

2006 Py02 base
2006 Py02 base2006 Py02 base
2006 Py02 base
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
Python@Unina - Theory
Python@Unina - TheoryPython@Unina - Theory
Python@Unina - Theory
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, java
 
Py t2 python-moduli
Py t2 python-moduliPy t2 python-moduli
Py t2 python-moduli
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
Py t3 python-oggetti
Py t3 python-oggettiPy t3 python-oggetti
Py t3 python-oggetti
 
Py a4 python-file
Py a4 python-filePy a4 python-file
Py a4 python-file
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Py a2 python-documentazione
Py a2 python-documentazionePy a2 python-documentazione
Py a2 python-documentazione
 
06 3 struct
06 3 struct06 3 struct
06 3 struct
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione
 
PHP Object Injection
PHP Object InjectionPHP Object Injection
PHP Object Injection
 
iOS_Course_6
iOS_Course_6iOS_Course_6
iOS_Course_6
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
 

Similar to Corso Python Deltapromo lezione 1

Presentazione django reminiscence
Presentazione django reminiscencePresentazione django reminiscence
Presentazione django reminiscenceAndrea Gottardi
 
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Paolo Ferretti
 
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in DelphiMarco Breveglieri
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseFelice Pescatore
 
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaLe 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaAdvenias
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...UltraUploader
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteGiuseppe Toto
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!MarioTraetta
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class LibraryManuel Scapolan
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionAndrea Della Corte
 

Similar to Corso Python Deltapromo lezione 1 (20)

Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Presentazione django reminiscence
Presentazione django reminiscencePresentazione django reminiscence
Presentazione django reminiscence
 
Variabili
VariabiliVariabili
Variabili
 
Template
TemplateTemplate
Template
 
Intro to JavaScript
Intro to JavaScriptIntro to JavaScript
Intro to JavaScript
 
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2
 
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
 
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa penaLe 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
 
Bash intro
Bash introBash intro
Bash intro
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...[Ebook   ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Programming iOS lezione 3
Programming iOS lezione 3Programming iOS lezione 3
Programming iOS lezione 3
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 
C# e la Framework Class Library
C# e la Framework Class LibraryC# e la Framework Class Library
C# e la Framework Class Library
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e Subversion
 
Iterazione - DI 2018
Iterazione - DI 2018Iterazione - DI 2018
Iterazione - DI 2018
 

More from Paolo Ferretti

Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with dockerPaolo Ferretti
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudPaolo Ferretti
 
Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Paolo Ferretti
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Paolo Ferretti
 
Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Paolo Ferretti
 

More from Paolo Ferretti (6)

Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with docker
 
OpenStreetMap
OpenStreetMapOpenStreetMap
OpenStreetMap
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
 
Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5Corso Python Deltapromo - Lezione 5
Corso Python Deltapromo - Lezione 5
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
 
Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4Corso Python Deltapromo - Lezione 4
Corso Python Deltapromo - Lezione 4
 

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 (certificati 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 ufficiale Python • Libro gratuito “Dive into Python” ( http://it.diveintopython.org/ )
  • 10. SHELL • L’interprete 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 definiti a runtime e possono variare • una variabile si definisce 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 • Definiscono regole e convenzioni • Si trovano all’indirizzo 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 qualcos’altro
  • 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 l’operatore + • 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 fine della lista
  • 22. LISTE • Agli elementi si può accedere • direttamente con l’indice: 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ò modificare • 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”) • verifica 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_file”, “r”) for line in f: print line f.close() • Nuovo metodo • withopen(“nome_file”, “r”) as f: for line in f: ...
  • 31. FILE OUTPUT • L’apertura del file avviene come per l’input ma con “w” al posto di “r” • si usa il metodo write() per scrivere su file
  • 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 l’istruzione return
  • 34. FUNZIONI • Una funzione può avere dei valori predefiniti per i parametri • def function(a = 10, b = 20) • Possiamo anche decidere l’ordine 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 all’elemento 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 definiscono 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 definite con • @property def proprieta(self): return self.__nome @proprieta.setter def proprieta(self, value): self.__name = value
  • 40. CLASSI • L’oggetto 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 all’esterno
  • 42. ECCEZIONI • Sono il modo migliore per controllare il flusso degli errori • Possono essere catturate con • try: f = open(“filename.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, è sufficiente 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 file
  • 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 file .py e un file __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