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
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
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
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