SlideShare a Scribd company logo
Introduzione a Python
Python 
Primi passi in python 
Emanuel Di Nardo 
GDG Campania
Un po di storia
Storia 
Sviluppato nel 1989 da Guido Van Rossum [aka benevolent dictator for life (BDFL)] come 
semplice “hobby”. 
Il nome è stato scelto in onore dei Monty Python. 
La filosofia dietro python si può racchiudere in alcuni versi chiamati “Zen of Python”: 
● Beautiful is better than ugly 
● Explicit is better than implicit 
● Simple is better than complex 
● Complex is better than complicated 
● Readability counts 
Per leggere la versione completa provare questo comando nel terminale: 
python -c ‘import this’
Introduzione
Introduzione 
● Linguaggio di programmazione ad oggetti / Scripting; 
● Linguaggio di alto livello (C / C++ / Java) 
● Linguaggio interpretato 
● Prototipazione veloce 
● Gestione automatica della memoria; 
● Sintassi semplice; 
● Tipizzazione dinamica; 
● Portabilità;
Nel dettaglio
On platform 
● Indipendente dalla piattaforma; 
● Interprete scritto in C (“CPython”); 
● Disponibile per tutte le piattaforme; 
● Versioni disponibili 2.7.x - 3.4.x; 
Download: https://www.python.org/downloads/ 
Utilizzeremo la versione 2.7!!! 
● Python 3 non è completamente retrocompatibile! 
● La maggior parte delle librerie sono scritte in python 2.x
Sintassi 
● Mancanza di punti e virgola “;” 
● Mancanza di parentesi graffe “{ }” 
● Operatore di accesso a moduli / metodi “.” 
● Inizio blocchi “:” 
● “Indentazione” 
>>> print ‘Hello world’ Python 
#include <stdio.h> C 
int main() { 
printf(“Hello world”); 
return 0; 
}
Hello World 
print ‘Hello world' Python 
● Da terminale; 
● python 
● python -c ‘codice’ 
● File python .py; 
● python hello.py
Tipizzazione 
● Tipi / oggetti “primitivi”: 
● Numeri; 
● Boolean (True, False); 
● Stringhe; 
● Strutture dati: 
● Liste (Array); 
● Tuple; 
● Dizionari; 
● Tipi “speciali”: 
● Nulli (None); 
>>> x = 3 Python 
>>> type(x) 
>>> <type 'int'> 
>>> x = 3.5 
>>> type(x) 
>>> <type 'float'> 
#include <stdio.h> C 
int main() { 
int x = 3; 
float y = 3.5; 
return 0; 
}
Numeri 
● Interi, reali; 
● Numeri reali automaticamente riconosciuti come float; 
● Operazioni matematiche di base (+ - / * ** %) 
x = 3 Python 
y = 3.5 
sum = x + y 
division = sum / x 
mult = x * y 
po = x ** y 
mod = 3 % 2
Stringhe 
● Si utilizzano doppi apici “stringa” , o apici singoli ‘stringa’; 
● Stringhe unicode, bytes, raw; 
● Concatenazione di stringhe “+” formattazione stringhe: %s %d ecc… 
● Accesso ai caratteri della stringa come se fossero liste; 
● Conversione automatica (coercion) da numeri a stringhe non permessa!!! 
● Le stringhe si confrontano semplicemente con == 
s1 = “stringa 1” Python 
s2 = ‘stringa 2’ 
s3 = s1 + ‘ ‘ + s2 # concatenazione 
s4 = s1 + ‘ %s’ % s2 
s5 = s1[:-1] + str(5) # acesso parziale ad s1 
s1 == s2 # confronto
Strutture dati 
● Liste (Array): 
● parentesi quadre “[ ]” 
● keyword list; 
● accesso tramite indice; 
● Tuple: 
● parentesi tonde “( )” 
● keyword tuple; 
● accesso tramite indice; 
● NON MODIFICABILI!!! 
● Dizionari: 
● parentesi graffe “{ }” 
● keyword dict; 
● accesso tramite parola chiave; 
● Contenuto non tipizzato! 
● E’ possibile annidare strutture dati di uguale o diverso tipo; 
Python 
lista = [1, 2, 3] 
tupla = (1, 2, “ciao”) 
dizionario = { 
‘chiave’: ‘valore’, 
‘secondo’: 2 
} 
print lista[1] 
print dizionario[‘chiave’] 
lista[1] = “stringa” # cambio valore elemento uno 
dizionario[‘secondo’] = ‘2’ 
dizionario[‘terzo] = lista # nuovo valore con oggetti annidati 
tupla(2) = 0 # errore
Conversioni di tipo (cast / coercion) 
● Il casting avviene tramite apposite funzioni; 
● Interi: int(); 
● Reali: float(); 
● Stringhe: str(); 
● Esistono altre tipologie di conversioni, ma queste sono le principali; 
print type(int(‘2’)) Python 
print type(float(3)) 
print type(str(2)) 
print 1 + 2.5 
print 2 / 3 
print 2 / 3. 
print ‘1 2 ‘ + 3 # errore 
print ‘1 2 ‘ + str(3) 
print ‘1 2 %d’ % 3
Librerie 
● Keyword “import” 
● Librerie e moduli personali: 
● __init__.py 
import os Python 
from sys import exit 
print os.getcwd() 
exit() # invece di sys.exit()
Condizioni 
● if condizione ... elif condizione … else 
● Operatore ternario: condizione if … else … 
● Non esiste lo switch! 
● Per concatenare più espressioni si usano: 
● keyword “or”; 
● keyword “and”; 
if 3 > 2: Python 
print True 
else: # non obbligatorio 
print False 
if 3 > 4: 
print True 
elif 3 > 2: # non obbligatorio 
print True 
else: # non obbligatorio 
print False 
if 3 < 5 < 7: 
print True 
print True if 3 > 2 else False
Cicli 
● for: 
● Accesso diretto ai valori in liste e tuple; 
● Accesso diretto alle chiave dei dizionari; 
● for … else: 
● Identico al for, ma se il ciclo termina senza 
interruzioni viene richiamato l’else; 
● while: 
● Ciclo condizionale; 
● Non esiste il do-while! 
● Per interrompere un ciclo: break; 
● Per saltare alla prossima iterazione: continue; 
for i in xrange(10): Python 
print i 
for i in xrange(10): 
print i 
else: 
print True 
i = 0 
while i < 10: 
i += 1
Operatori utili 
● in: 
● Verifica se un elemento è presente 
in una lista; 
● not: 
● Operatore di negazione; 
● is: 
● Operatore di confronto (identità); 
● Da non utilizzare per confrontare valori! 
● Utilizzato per lo più per i confronti con valori 
nulli; 
a = [1, 2, 3] Python 
for i in a: 
print i 
if 2 in a: 
print True 
if a is not None: 
print True 
b = [1, 2, 3] 
print a == b # True 
print a is b # False
Eccezioni 
● try … except: 
● Permette di gestire le eccezioni; 
● try … except … else: 
● Se l’eccezione non viene lanciata, verrà 
eseguito l’else; 
● try … except … finally: 
● Il finally viene sempre eseguito; 
● Se l’eccezione non viene gestita prima del 
finally questa viene lanciata di nuovo! 
● raise: 
● Lancia un’eccezione; 
try: Python 
print q 
except NameError as e: 
print e 
else: 
print ‘OK’ 
finally: 
print ‘fine’
Funzioni 
● Keyword “def”; 
● Argomenti opzionali e non tipizzati; 
● Ogni funzione può tornare o meno dei dati, 
utilizzare la keyword “return”; 
● Return dinamico, possono ritornare 
uno o più dati (verrà creata una tupla); 
● Argomenti con *: 
● *args: crea una lista con gli 
elementi passati alla funzione; 
● **kwargs: crea un dizionario 
con gli elementi passati alla funzione; 
Python 
def print_nome(nome, cognome=None): 
s = ‘Ciao ‘ + nome 
if cognome is not None: 
s += ‘ ‘ + cognome 
print s 
def moltiplica(num, *args): 
molt = None 
if len(args) == 0: 
molt = [2, 3, 4] 
else: 
molt = args[:] 
return num*molt[0], num*molt[1], num*molt[2] 
nome = raw_input(‘Come ti chiami?’) 
print_nome(nome) 
n1, n2, n3 = moltiplica(2)
Classi 
● Dato “astratto” che definisce un oggetto; 
● Attributi (dati interni) e metodi (azioni); 
● I dati sono solo pubblici! (underscore “_” per convenzione “private”); 
● Accesso alle componenti interne della classe tramite self.componente; 
● Ereditarietà “multipla”, polimorfismo; 
● Ogni classe eredità da object;
Classi - Attributi e metodi 
● Gli attributi possono essere definiti: 
● All’esterno dei metodi (no self), devono essere inizializzati! 
● All’interno dei metodi (usare self); 
● Gli attributi una volta definiti sono globali all’interno della classe; 
● I metodi sono definiti: 
● in modo simile alle funzioni con la keyword “def”; 
● il primo argomento deve essere self 
● Per accedere ad attributi e metodi si utilizza l’operatore “.”; 
● L’utilizzo del doppio underscore prima del nome dell’elemento 
(e al più un underscore dopo il nome) causa name mangling. 
class Auto: Python 
marca = None 
def set_marca(self, marca): 
self.marca = marca.tolower() 
self.sigla_marca = self.marca[0:2]
Funzioni di aiuto 
● dir(object) stampa in una lista tutti i metodi e attributi dell’oggetto; 
● help(object) visualizza la documentazione relativa all’oggetto se presente;
Classi - Subclassing, costruttore 
● Ogni classe estende implicitamente “object”; 
● Per estendere una classe si usano le parentesi tonde; 
● E’ possibile estendere più di una classe; 
● Il costruttore di ogni classe è il metodo __init__; 
● Per richiamare la superclasse è possibile usare il metodo super; 
class Auto(Telaio): Python 
marca = None 
def __init__(self, marca): 
super(Auto, self).__init__() 
self.marca = marca.tolower()
Utilizzo 
● Web development: 
● Django; 
● Bottle; 
● Flask; 
● App Engine; 
● Standalone development & GUI: 
● wxPython; 
● PyQt; 
● TkInter; 
● Scientific calculus: 
● SciPy; 
● Matplotlib; 
● “Anaconda”;
Utility 
● “IDE”: 
● Editor di testo (Sublime Text); 
● PyCharm; 
● Spyder; 
● Installazione automatica moduli: 
● pip; (pip install module_name) 
● easy_install; (easy_install module_name) 
● Installazione manuale moduli: 
● python setup.py install; 
● Eseguibili: 
● pyinstaller; 
● py2exe; 
● py2app;
Demo
<Thank You!> 
email: 
emanuel.dinardo@gmail.com 
G+ plus.google.com/+EmanuelDiNardo 
twitter @bboymasa 
website http://emanueldinardo.com
Introduzione a Python

More Related Content

PDF
Spyppolare o non spyppolare
PyCon Italia
 
PDF
LINQ, Entities Framework & ORMs
JUG Genova
 
PDF
Groovy & Grails
Marcello Teodori
 
PDF
2008 python
Loris Michielutti
 
PDF
2006 Py03 intermedio
Loris Michielutti
 
PDF
2006 Py02 base
Loris Michielutti
 
PDF
Programmazione funzionale e Stream in Java
Cristina Attori
 
PPT
Corso c++
Antonio Furone
 
Spyppolare o non spyppolare
PyCon Italia
 
LINQ, Entities Framework & ORMs
JUG Genova
 
Groovy & Grails
Marcello Teodori
 
2008 python
Loris Michielutti
 
2006 Py03 intermedio
Loris Michielutti
 
2006 Py02 base
Loris Michielutti
 
Programmazione funzionale e Stream in Java
Cristina Attori
 
Corso c++
Antonio Furone
 

What's hot (20)

PDF
Pillole di C++
Corrado Santoro
 
PPTX
2011.02.19 Introducing F#
Marco Parenzan
 
PPTX
Programmazione Funzionale per tutti
Salvatore Sorrentino
 
PDF
Let's give it a GO!
MarioTraetta
 
PPTX
Python@Unina - Theory
NaLUG
 
KEY
Pycrashcourse
rik0
 
PPT
05 1 intro-struttura
Piero Fraternali
 
KEY
Corso Python Deltapromo lezione 1
Paolo Ferretti
 
ODP
Javaday 2006: Java 5
Matteo Baccan
 
PPTX
Scala: come recuperare la programmazione funzionale e perché
Edmondo Porcu
 
PDF
Comunicazione tra procesi Linux
Marco Buttolo
 
PPT
PHP:funzioni e interazione con MySQL
extrategy
 
PPTX
Rest sdk
Raffaele Rialdi
 
PPTX
06 3 struct
Piero Fraternali
 
PDF
Lezione 5 (7 marzo 2012)
STELITANO
 
PDF
Coding class da scratch a python
Enrico La Sala
 
PDF
Bash intro
Giuseppe Levi
 
PDF
Introduzione a JavaScript
Giovanni Buffa
 
PPT
05 2 integrali-conversioni-costanti-preproc-inclusione
Piero Fraternali
 
PDF
Ruby in 25 minuti
Marcello Missiroli
 
Pillole di C++
Corrado Santoro
 
2011.02.19 Introducing F#
Marco Parenzan
 
Programmazione Funzionale per tutti
Salvatore Sorrentino
 
Let's give it a GO!
MarioTraetta
 
Python@Unina - Theory
NaLUG
 
Pycrashcourse
rik0
 
05 1 intro-struttura
Piero Fraternali
 
Corso Python Deltapromo lezione 1
Paolo Ferretti
 
Javaday 2006: Java 5
Matteo Baccan
 
Scala: come recuperare la programmazione funzionale e perché
Edmondo Porcu
 
Comunicazione tra procesi Linux
Marco Buttolo
 
PHP:funzioni e interazione con MySQL
extrategy
 
Rest sdk
Raffaele Rialdi
 
06 3 struct
Piero Fraternali
 
Lezione 5 (7 marzo 2012)
STELITANO
 
Coding class da scratch a python
Enrico La Sala
 
Bash intro
Giuseppe Levi
 
Introduzione a JavaScript
Giovanni Buffa
 
05 2 integrali-conversioni-costanti-preproc-inclusione
Piero Fraternali
 
Ruby in 25 minuti
Marcello Missiroli
 
Ad

Viewers also liked (20)

PDF
Wireframe, mockup e visual: quali strumenti per le prime fasi di un design?
Eugenio Minardi
 
PDF
Intel Software Android Webinar Series: Sviluppare le vostre app per Android, ...
Francesco Baldassarri
 
PPTX
wireframe prototyping
Acrmnet s.r.l.
 
PDF
La piattaforma Android il mobile per tutti alla fine di una strada erta?
Andrea Antonello
 
PDF
Introduzione ad Android
Emanuel Di Nardo
 
ODP
Android base day1
Andrea Zaza
 
PPT
Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
Cultura Senza Barriere
 
PDF
Android App Development - Unimore
Nicola Corti
 
PDF
Android
Stefano Sanna
 
PDF
Wireframes Rulez - Santangelo
Codemotion
 
PDF
Introduzione ad Android
Francesco Florio
 
PPT
Wireframe e struttura del sito internet
Daniele Moraschi
 
KEY
Whymca Dive into Android [ITA]
Emanuele Di Saverio
 
PPTX
Android Code Camp 2012 - ita
neunet
 
PDF
Il Tool Definitivo dello UX Designer
Alberto Mucignat
 
PDF
Conoscere Android per poterlo Programmare
Flavius-Florin Harabor
 
PDF
Android App Development, Creare la nostra prima app
Nicola Corti
 
PDF
Corso Android
Andrea Putzu
 
PDF
Distributed implementation of a lstm on spark and tensorflow
Emanuel Di Nardo
 
Wireframe, mockup e visual: quali strumenti per le prime fasi di un design?
Eugenio Minardi
 
Intel Software Android Webinar Series: Sviluppare le vostre app per Android, ...
Francesco Baldassarri
 
wireframe prototyping
Acrmnet s.r.l.
 
La piattaforma Android il mobile per tutti alla fine di una strada erta?
Andrea Antonello
 
Introduzione ad Android
Emanuel Di Nardo
 
Android base day1
Andrea Zaza
 
Dal Wireframe alla pubblicazione: sviluppo usabile di un sito
Cultura Senza Barriere
 
Android App Development - Unimore
Nicola Corti
 
Android
Stefano Sanna
 
Wireframes Rulez - Santangelo
Codemotion
 
Introduzione ad Android
Francesco Florio
 
Wireframe e struttura del sito internet
Daniele Moraschi
 
Whymca Dive into Android [ITA]
Emanuele Di Saverio
 
Android Code Camp 2012 - ita
neunet
 
Il Tool Definitivo dello UX Designer
Alberto Mucignat
 
Conoscere Android per poterlo Programmare
Flavius-Florin Harabor
 
Android App Development, Creare la nostra prima app
Nicola Corti
 
Corso Android
Andrea Putzu
 
Distributed implementation of a lstm on spark and tensorflow
Emanuel Di Nardo
 
Ad

Similar to Introduzione a Python (20)

ODP
Seminario introduzione all'uso del terminale e della bash in Linux
alberto fiaschi
 
PPT
Riepilogo Java C/C++
Pasquale Paola
 
PDF
lezione1.pdf
dttdigi
 
PPTX
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
Marco Breveglieri
 
PDF
Vogliamo programmatori stupidi e pigri!
Marcello Missiroli
 
KEY
A brief intro to TDD for a JUG-TAA event
Pietro Di Bello
 
PDF
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
UltraUploader
 
PDF
Corso python 2020 - Lezione 1
Riccardo Bortoluzzi
 
PDF
Linux@Unina
NaLUG
 
PDF
Lezione 12 (28 marzo 2012)
STELITANO
 
PDF
Lezione 12 (28 marzo 2012)
STELITANO
 
ODP
Js intro
Daniele Cruciani
 
PDF
Acadevmy - TypeScript Overview
Francesco Sciuti
 
PDF
Le basi di Pytthon 3 - Fondamenti n.1
I.S.I.S. "Antonio Serra" - Napoli
 
ODP
Pycon Jungle
guest6b08a5
 
PDF
Esercitazione 1 (27 febbraio 2012)
STELITANO
 
PDF
Slides introduttive alla programmazione del linguaggio Python
gnike62
 
PDF
Linguaggio R, principi e concetti
Vincenzo De Maio
 
PDF
TypeScript, ovvero JavaScript che "non si rompe"
BENTOSA
 
PDF
Javascript - 7 | WebMaster & WebDesigner
Matteo Magni
 
Seminario introduzione all'uso del terminale e della bash in Linux
alberto fiaschi
 
Riepilogo Java C/C++
Pasquale Paola
 
lezione1.pdf
dttdigi
 
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
Marco Breveglieri
 
Vogliamo programmatori stupidi e pigri!
Marcello Missiroli
 
A brief intro to TDD for a JUG-TAA event
Pietro Di Bello
 
[Ebook ita - security] introduzione alle tecniche di exploit - mori - ifoa ...
UltraUploader
 
Corso python 2020 - Lezione 1
Riccardo Bortoluzzi
 
Linux@Unina
NaLUG
 
Lezione 12 (28 marzo 2012)
STELITANO
 
Lezione 12 (28 marzo 2012)
STELITANO
 
Acadevmy - TypeScript Overview
Francesco Sciuti
 
Le basi di Pytthon 3 - Fondamenti n.1
I.S.I.S. "Antonio Serra" - Napoli
 
Pycon Jungle
guest6b08a5
 
Esercitazione 1 (27 febbraio 2012)
STELITANO
 
Slides introduttive alla programmazione del linguaggio Python
gnike62
 
Linguaggio R, principi e concetti
Vincenzo De Maio
 
TypeScript, ovvero JavaScript che "non si rompe"
BENTOSA
 
Javascript - 7 | WebMaster & WebDesigner
Matteo Magni
 

Introduzione a Python

  • 2. Python Primi passi in python Emanuel Di Nardo GDG Campania
  • 3. Un po di storia
  • 4. Storia Sviluppato nel 1989 da Guido Van Rossum [aka benevolent dictator for life (BDFL)] come semplice “hobby”. Il nome è stato scelto in onore dei Monty Python. La filosofia dietro python si può racchiudere in alcuni versi chiamati “Zen of Python”: ● Beautiful is better than ugly ● Explicit is better than implicit ● Simple is better than complex ● Complex is better than complicated ● Readability counts Per leggere la versione completa provare questo comando nel terminale: python -c ‘import this’
  • 6. Introduzione ● Linguaggio di programmazione ad oggetti / Scripting; ● Linguaggio di alto livello (C / C++ / Java) ● Linguaggio interpretato ● Prototipazione veloce ● Gestione automatica della memoria; ● Sintassi semplice; ● Tipizzazione dinamica; ● Portabilità;
  • 8. On platform ● Indipendente dalla piattaforma; ● Interprete scritto in C (“CPython”); ● Disponibile per tutte le piattaforme; ● Versioni disponibili 2.7.x - 3.4.x; Download: https://www.python.org/downloads/ Utilizzeremo la versione 2.7!!! ● Python 3 non è completamente retrocompatibile! ● La maggior parte delle librerie sono scritte in python 2.x
  • 9. Sintassi ● Mancanza di punti e virgola “;” ● Mancanza di parentesi graffe “{ }” ● Operatore di accesso a moduli / metodi “.” ● Inizio blocchi “:” ● “Indentazione” >>> print ‘Hello world’ Python #include <stdio.h> C int main() { printf(“Hello world”); return 0; }
  • 10. Hello World print ‘Hello world' Python ● Da terminale; ● python ● python -c ‘codice’ ● File python .py; ● python hello.py
  • 11. Tipizzazione ● Tipi / oggetti “primitivi”: ● Numeri; ● Boolean (True, False); ● Stringhe; ● Strutture dati: ● Liste (Array); ● Tuple; ● Dizionari; ● Tipi “speciali”: ● Nulli (None); >>> x = 3 Python >>> type(x) >>> <type 'int'> >>> x = 3.5 >>> type(x) >>> <type 'float'> #include <stdio.h> C int main() { int x = 3; float y = 3.5; return 0; }
  • 12. Numeri ● Interi, reali; ● Numeri reali automaticamente riconosciuti come float; ● Operazioni matematiche di base (+ - / * ** %) x = 3 Python y = 3.5 sum = x + y division = sum / x mult = x * y po = x ** y mod = 3 % 2
  • 13. Stringhe ● Si utilizzano doppi apici “stringa” , o apici singoli ‘stringa’; ● Stringhe unicode, bytes, raw; ● Concatenazione di stringhe “+” formattazione stringhe: %s %d ecc… ● Accesso ai caratteri della stringa come se fossero liste; ● Conversione automatica (coercion) da numeri a stringhe non permessa!!! ● Le stringhe si confrontano semplicemente con == s1 = “stringa 1” Python s2 = ‘stringa 2’ s3 = s1 + ‘ ‘ + s2 # concatenazione s4 = s1 + ‘ %s’ % s2 s5 = s1[:-1] + str(5) # acesso parziale ad s1 s1 == s2 # confronto
  • 14. Strutture dati ● Liste (Array): ● parentesi quadre “[ ]” ● keyword list; ● accesso tramite indice; ● Tuple: ● parentesi tonde “( )” ● keyword tuple; ● accesso tramite indice; ● NON MODIFICABILI!!! ● Dizionari: ● parentesi graffe “{ }” ● keyword dict; ● accesso tramite parola chiave; ● Contenuto non tipizzato! ● E’ possibile annidare strutture dati di uguale o diverso tipo; Python lista = [1, 2, 3] tupla = (1, 2, “ciao”) dizionario = { ‘chiave’: ‘valore’, ‘secondo’: 2 } print lista[1] print dizionario[‘chiave’] lista[1] = “stringa” # cambio valore elemento uno dizionario[‘secondo’] = ‘2’ dizionario[‘terzo] = lista # nuovo valore con oggetti annidati tupla(2) = 0 # errore
  • 15. Conversioni di tipo (cast / coercion) ● Il casting avviene tramite apposite funzioni; ● Interi: int(); ● Reali: float(); ● Stringhe: str(); ● Esistono altre tipologie di conversioni, ma queste sono le principali; print type(int(‘2’)) Python print type(float(3)) print type(str(2)) print 1 + 2.5 print 2 / 3 print 2 / 3. print ‘1 2 ‘ + 3 # errore print ‘1 2 ‘ + str(3) print ‘1 2 %d’ % 3
  • 16. Librerie ● Keyword “import” ● Librerie e moduli personali: ● __init__.py import os Python from sys import exit print os.getcwd() exit() # invece di sys.exit()
  • 17. Condizioni ● if condizione ... elif condizione … else ● Operatore ternario: condizione if … else … ● Non esiste lo switch! ● Per concatenare più espressioni si usano: ● keyword “or”; ● keyword “and”; if 3 > 2: Python print True else: # non obbligatorio print False if 3 > 4: print True elif 3 > 2: # non obbligatorio print True else: # non obbligatorio print False if 3 < 5 < 7: print True print True if 3 > 2 else False
  • 18. Cicli ● for: ● Accesso diretto ai valori in liste e tuple; ● Accesso diretto alle chiave dei dizionari; ● for … else: ● Identico al for, ma se il ciclo termina senza interruzioni viene richiamato l’else; ● while: ● Ciclo condizionale; ● Non esiste il do-while! ● Per interrompere un ciclo: break; ● Per saltare alla prossima iterazione: continue; for i in xrange(10): Python print i for i in xrange(10): print i else: print True i = 0 while i < 10: i += 1
  • 19. Operatori utili ● in: ● Verifica se un elemento è presente in una lista; ● not: ● Operatore di negazione; ● is: ● Operatore di confronto (identità); ● Da non utilizzare per confrontare valori! ● Utilizzato per lo più per i confronti con valori nulli; a = [1, 2, 3] Python for i in a: print i if 2 in a: print True if a is not None: print True b = [1, 2, 3] print a == b # True print a is b # False
  • 20. Eccezioni ● try … except: ● Permette di gestire le eccezioni; ● try … except … else: ● Se l’eccezione non viene lanciata, verrà eseguito l’else; ● try … except … finally: ● Il finally viene sempre eseguito; ● Se l’eccezione non viene gestita prima del finally questa viene lanciata di nuovo! ● raise: ● Lancia un’eccezione; try: Python print q except NameError as e: print e else: print ‘OK’ finally: print ‘fine’
  • 21. Funzioni ● Keyword “def”; ● Argomenti opzionali e non tipizzati; ● Ogni funzione può tornare o meno dei dati, utilizzare la keyword “return”; ● Return dinamico, possono ritornare uno o più dati (verrà creata una tupla); ● Argomenti con *: ● *args: crea una lista con gli elementi passati alla funzione; ● **kwargs: crea un dizionario con gli elementi passati alla funzione; Python def print_nome(nome, cognome=None): s = ‘Ciao ‘ + nome if cognome is not None: s += ‘ ‘ + cognome print s def moltiplica(num, *args): molt = None if len(args) == 0: molt = [2, 3, 4] else: molt = args[:] return num*molt[0], num*molt[1], num*molt[2] nome = raw_input(‘Come ti chiami?’) print_nome(nome) n1, n2, n3 = moltiplica(2)
  • 22. Classi ● Dato “astratto” che definisce un oggetto; ● Attributi (dati interni) e metodi (azioni); ● I dati sono solo pubblici! (underscore “_” per convenzione “private”); ● Accesso alle componenti interne della classe tramite self.componente; ● Ereditarietà “multipla”, polimorfismo; ● Ogni classe eredità da object;
  • 23. Classi - Attributi e metodi ● Gli attributi possono essere definiti: ● All’esterno dei metodi (no self), devono essere inizializzati! ● All’interno dei metodi (usare self); ● Gli attributi una volta definiti sono globali all’interno della classe; ● I metodi sono definiti: ● in modo simile alle funzioni con la keyword “def”; ● il primo argomento deve essere self ● Per accedere ad attributi e metodi si utilizza l’operatore “.”; ● L’utilizzo del doppio underscore prima del nome dell’elemento (e al più un underscore dopo il nome) causa name mangling. class Auto: Python marca = None def set_marca(self, marca): self.marca = marca.tolower() self.sigla_marca = self.marca[0:2]
  • 24. Funzioni di aiuto ● dir(object) stampa in una lista tutti i metodi e attributi dell’oggetto; ● help(object) visualizza la documentazione relativa all’oggetto se presente;
  • 25. Classi - Subclassing, costruttore ● Ogni classe estende implicitamente “object”; ● Per estendere una classe si usano le parentesi tonde; ● E’ possibile estendere più di una classe; ● Il costruttore di ogni classe è il metodo __init__; ● Per richiamare la superclasse è possibile usare il metodo super; class Auto(Telaio): Python marca = None def __init__(self, marca): super(Auto, self).__init__() self.marca = marca.tolower()
  • 26. Utilizzo ● Web development: ● Django; ● Bottle; ● Flask; ● App Engine; ● Standalone development & GUI: ● wxPython; ● PyQt; ● TkInter; ● Scientific calculus: ● SciPy; ● Matplotlib; ● “Anaconda”;
  • 27. Utility ● “IDE”: ● Editor di testo (Sublime Text); ● PyCharm; ● Spyder; ● Installazione automatica moduli: ● pip; (pip install module_name) ● easy_install; (easy_install module_name) ● Installazione manuale moduli: ● python setup.py install; ● Eseguibili: ● pyinstaller; ● py2exe; ● py2app;
  • 28. Demo
  • 29. <Thank You!> email: [email protected] G+ plus.google.com/+EmanuelDiNardo twitter @bboymasa website http://emanueldinardo.com