Corso Python Deltapromo   lezione 1
Upcoming SlideShare
Loading in...5
×
 

Corso Python Deltapromo lezione 1

on

  • 1,069 views

Prima lezione del corso di programmazione che ho tenuto presso Deltapromo

Prima lezione del corso di programmazione che ho tenuto presso Deltapromo

Statistics

Views

Total Views
1,069
Views on SlideShare
1,067
Embed Views
2

Actions

Likes
1
Downloads
17
Comments
0

2 Embeds 2

http://duckduckgo.com 1
https://duckduckgo.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Corso Python Deltapromo   lezione 1 Corso Python Deltapromo lezione 1 Presentation Transcript

  • 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