Programma del corso
- Storia di Python
- Struttura astratta di Python
- Python interattivo
- Controllo di flusso e blocchi di codice
- Interludio: si, ma come lo stampo?
- Controllo di flusso visuale ed indentazione
- Iterabili
- Il paradigma di programmazione Object Oriented
- Organizzazione logica di Python
- Gestione della memoria e lifetime
- Tipi base
- Aiuto ed introspezione
- Namespace
- Funzioni
- Invocazione usando args e *kwds
- Funzioni anonime
- Il C Memory Model: stack ed heap
- Strutture dati: code e cataste
- Scope
- Controllo di flusso: eccezioni ed errori
- with statement
- pass statement
- import, moduli e packages
- Strutturare un programma: il main ed i suoi fratelli e sorelle: le classi, le funzioni ed i moduli
- import e namespace pollution
- scrittura di librerie e moduli - moduli e package [init]
- debugging via ambiente python + reload modulo
- Tipi di dato fondamentali: le tuple
- Tipi di dato fondamentali: le liste
- Tipi di dato fondamentali: i dizionari
- Tipi di dato fondamentali: le stringhe
- Metatipi ed astrazioni: le slice
- Funzioni standard: len, hash, operatori aritmetici/comparazione, iter, str
- Namespaces, scopes, aliasing e shadowing
- OOP in Python: come si definisce una classe
- inheritance: super e lookup rule (mro)
- metodi e self
- come si invoca un metodo?
- polimorfismo "ad hoc": funzioni proxy e metodi magici
- Python Avanzato: comprensioni
- Python Avanzato: FunPy e lambda
- Python Avanzato: chiusure, funtori e funzioni di ordine superiore
- Python Avanzato: lazy vs eager e differenze tra py2 e py3
- Python Avanzato: lazy programming: generatori
- Python Avanzato: decoratori
- Python Avanzato: Duck typing: cos'è un iterabile?
- Python Avanzato: Interfacce astratte in Python @abstractmetod
- un esempio completo di implementazione di un framework di test
- PyPI / Python Package Index - package handling: pip, easy_install, ...
- virtualenv
- docstrings ed help system / rst?
- il modulo atexit
- il modulo os
- il modulo sys
- gestione di file testo e binari, lettura/scrittura/append...
- filesystem navigation: il modulo os.path
- path ed astrazioni relative
- il modulo fnmatch
- il modulo glob
- command line argument parsing: i moduli getopt, argparse, dopcopt
- implementazione di applicazioni
- uso degli standard streams ed implementazione di filtri
- output formattato
- gestione del tempo e delle date
- modulo logging
- parsing: RE ed FSM
- modulo ConfigParser
- fork-ing ed exec-ing
- IPC locale e non
- modulo signal
- multithreading e GIL
- multiprocessing
- subprocess: gestione di sottoprocessi
- Unicode ed encodings (UTF-8 in particolare)
- networking: socket clients
- networking: socket servers
- select e selectors
- socket SSL
- pyzmq (0mq)
- esecuzione di comandi remoti (ssh, ...?)
- overview di IDE ed editor disponibili
- python: testi suggeriti
- python: siti suggeriti