| 0.15 | | Prefazione |
| 0.17 | | Premessa |
| 0.24 | | __ |
| 0.24 | | ____ |
| | | {titolo} |
| 1 | Parte I. | Per iniziare |
| 3 | Capitolo 1. | Parliamo di Python |
| 3 | | Perché imparare a usare Python? |
| 4 | | I punti di forza di Python |
| 4 | | È facile da utilizzare |
| 4 | | È espressivo |
| 5 | | È leggibile |
| 6 | | È un linguaggio completo, “batterie incluse” |
| 6 | | È multipiattaforma |
| 6 | | È gratuito |
| 7 | | Le cose che Python non fa altrettanto bene |
| 7 | | Non è un linguaggio velocissimo |
| 8 | | Non offre molte librerie |
| 8 | | Non controlla il tipo delle variabili al momentovdella compilazione |
| 9 | | Non offre un grande supporto per i sistemi mobili |
| 9 | | Non sfrutta i sistemi multiprocessore |
| 9 | | Perché imparare proprio Python 3? |
| 10 | | Riepilogo |
| 11 | Capitolo 2. | Preparativi |
| 11 | | Installare Python |
| 13 | | La modalità base interattiva e l’ambiente IDLE |
| 13 | | La modalità base interattiva |
| 14 | | L’ambiente di sviluppo integrato IDLE |
| 15 | | Scelta fra la modalità base interattiva e l’ambiente IDLE |
| 15 | | Uso di IDLE quale shell Python |
| 16 | | Hello, world |
| 16 | | Uso del prompt interattivo per esplorare Python |
| 18 | | Riepilogo |
| 19 | Capitolo 3. | Panoramica rapida su Python |
| 19 | | L’idea di base di Python |
| 20 | | I tipi di dati built-in |
| 20 | | Numeri |
| 22 | | Liste |
| 23 | | Tuple |
| 24 | | Stringhe |
| 25 | | Dizionari |
| 26 | | Insiemi (set) |
| 26 | | Oggetti file |
| 27 | | Le strutture di controllo del flusso |
| 27 | | Valori booleani ed espressioni |
| 27 | | L’istruzione if-elif-else |
| 28 | | Il ciclo while |
| 28 | | Il ciclo for |
| 29 | | Definizione di funzioni |
| 30 | | Eccezioni |
| 30 | | Gestione del contesto con la parola chiave with |
| 31 | | La creazione di moduli |
| 32 | | Programmazione a oggetti |
| 34 | | Riepilogo |
| 35 | Parte II. | Elementi di base |
| 37 | Capitolo 4. | Partiamo dall’inizio |
| 37 | | L’indentazione e la struttura a blocchi |
| 39 | | Differenziazione dei commenti |
| 39 | | Le variabili e gli assegnamenti |
| 41 | | Le espressioni |
| 42 | | Le stringhe |
| 43 | | I numeri |
| 44 | | Funzioni numeriche interne |
| 44 | | Funzioni numeriche avanzate |
| 44 | | Calcolo numerico |
| 45 | | Numeri complessi |
| 45 | | Funzioni avanzate sui numeri complessi |
| 46 | | Il valore None |
| 47 | | Richiedere l’input all’utente |
| 47 | | Gli operatori interni |
| 48 | | Lo stile di programmazione Python |
| 48 | | Riepilogo |
| 49 | Capitolo 5. | Liste, tuple e insiemi |
| 49 | | Somiglianze tra liste e array |
| 50 | | Gli indici delle liste |
| 52 | | Modificare le liste |
| 55 | | Ordinare le liste |
| 56 | | Ordinamento personalizzato |
| 57 | | La funzione sorted() |
| 57 | | Altre operazioni comuni sulle liste |
| 57 | | Appartenenza alla lista, con l’operatore in |
| 58 | | Concatenamento di liste con l’operatore + |
| 58 | | Inizializzazione delle liste con l’operatore * |
| 58 | | Il minimo o il massimo di una lista con min e max |
| 59 | | Ricerca nelle liste con indice |
| 59 | | Conteggio degli elementi di una lista |
| 59 | | Riepilogo delle operazioni sulle liste |
| 61 | | Le liste annidate e la copia profonda |
| 64 | | Le tuple |
| 64 | | Elementi di base delle tuple |
| 65 | | Una tupla di un elemento ha bisogno di una virgola |
| 65 | | Elaborazione delle tuple |
| 67 | | Conversione fra liste e tuple |
| 68 | | Gli insiemi (set) |
| 68 | | Operazioni sugli insiemi |
| 69 | | Insiemi “congelati” |
| 70 | | Riepilogo |
| 71 | Capitolo 6. | Stringhe |
| 71 | | Le stringhe come sequenze di caratteri |
| 72 | | Le operazioni di base sulle stringhe |
| 72 | | I caratteri speciali e le sequenze di escape |
| 73 | | Le sequenze di escape di base |
| 73 | | Sequenze di escape numeriche (ottali ed esadecimali) e Unicode |
| 74 | | Visualizzazione o valutazione delle stringhe con caratteri speciali |
| 75 | | I metodi per le stringhe |
| 75 | | I metodi per stringhe split e join |
| 77 | | Conversione di stringhe in numeri |
| 78 | | Eliminazione degli spazi in eccesso |
| 79 | | Ricerca all’interno delle stringhe |
| 81 | | Modifica delle stringhe |
| 82 | | Modifica di stringhe utilizzando le manipolazioni sulle liste |
| 83 | | Metodi e costanti utili |
| 84 | | La conversione da oggetti a stringhe |
| 85 | | Il metodo format |
| 86 | | Il metodo format e i parametri posizionali |
| 86 | | Il metodo format e i parametri con nome |
| 87 | | Specificatori di formato |
| 87 | | La formattazione delle stringhe con % |
| 88 | | Uso delle sequenze di formattazione |
| 89 | | Parametri con nome e sequenze di formattazione |
| 90 | | L’interpolazione di stringhe |
| 91 | | I valori bytes |
| 92 | | Riepilogo |
| 93 | Capitolo 7. | Dizionari |
| 93 | | Che cos’è un dizionario? |
| 95 | | Altre operazioni sui dizionari |
| 98 | | Contare le parole |
| 99 | | Che cosa può essere utilizzato come chiave? |
| 100 | | Le matrici sparse |
| 101 | | I dizionari come cache |
| 102 | | L’efficienza dei dizionari |
| 103 | | Riepilogo |
| 112 | | Espressioni generative |
| 105 | Capitolo 8. | Controllo del flusso di esecuzione |
| 105 | | Il ciclo while |
| 106 | | L’istruzione if-elif-else |
| 107 | | Il ciclo for |
| 108 | | La funzione range |
| 109 | | Controllo di range con un valore iniziale e un passo |
| 109 | | L’uso di break e continue nei cicli for |
| 109 | | Il ciclo for e le tuple |
| 110 | | La funzione enumerate |
| 110 | | La funzione zip |
| 111 | | Usare liste e dizionari |
| 113 | | Le istruzioni, i blocchi e l’indentazione |
| 116 | | Le espressioni e i valori booleani |
| 116 | | La maggior parte degli oggetti Python può essere utilizzata come un valore booleano |
| 116 | | Confronti e operatori booleani |
| 118 | | Scrivere un semplice programma per l’analisi di un file di testo |
| 119 | | Riepilogo |
| 121 | Capitolo 9. | Funzioni |
| 121 | | Definire le funzioni più semplici |
| 122 | | Le opzioni per i parametri delle funzioni |
| 124 | | Passaggio di argomenti in base al nome del parametro |
| 125 | | Numero variabile di argomenti |
| 126 | | Utilizzo misto di più tecniche di passaggio degli argomenti |
| 123 | | Parametri posizionali |
| 126 | | Gli oggetti mutabili usati come argomenti |
| 128 | | Le variabili locali, non locali e globali |
| 130 | | Assegnare funzioni alle variabili |
| 131 | | Le espressioni lambda |
| 132 | | Le funzioni generative |
| 133 | | I decoratori |
| 135 | | Riepilogo |
| 137 | Capitolo 10. | Moduli e regole di visibilità |
| 137 | | Che cos’è un modulo? |
| 138 | | Un primo modulo |
| 140 | | L’istruzione import |
| 141 | | Il percorso di ricerca dei moduli |
| 142 | | Dove collocare i moduli |
| 143 | | I nomi privati nei moduli |
| 144 | | I moduli della libreria e i moduli sviluppati da terzi |
| 145 | | Le regole di visibilità e i namespace in Python |
| 151 | | Riepilogo |
| 153 | Capitolo 11. | Programmi Python |
| 153 | | Creare un semplice programma |
| 154 | | Avviare uno script dalla riga di comando |
| 154 | | Argomenti della riga di comando |
| 155 | | Redirezione dell’input e dell’output di uno script |
| 156 | | Il modulo argparse |
| 157 | | Uso del modulo fileinput |
| 159 | | Creare uno script eseguibile direttamente in UNIX |
| 160 | | Gli script in OS X |
| 160 | | Le opzioni di esecuzione degli script in Windows |
| 160 | | Avvio di uno script dalla finestra dei comandi o dalla PowerShell |
| 161 | | Altre opzioni per Windows |
| 161 | | I programmi e i moduli |
| 166 | | Distribuire le applicazioni Python |
| 166 | | Wheel per Python |
| 166 | | zipapp e pex |
| 167 | | Creazione di programmi eseguibili con freeze |
| 168 | | Riepilogo |
| 169 | Capitolo 12. | Uso del file system |
| 169 | | os e os.path vs pathlib |
| 170 | | I percorsi e i nomi di percorsi |
| 170 | | Percorsi assoluti e relativi |
| 172 | | La directory di lavoro corrente |
| 173 | | Accesso alle directory con pathlib |
| 173 | | Manipolazione dei percorsi |
| 175 | | Manipolazione dei percorsi con pathlib |
| 176 | | Costanti e funzioni utili |
| 178 | | Ottenere informazioni sui file |
| 179 | | Ottenere informazioni sui file con scandir |
| 179 | | Altre operazioni sul file system |
| 181 | | Altre operazioni sui file system con pathlib |
| 183 | | Elaborare tutti i file di un sottoalbero di directory |
| 184 | | Riepilogo |
| 187 | Capitolo 13. | Lettura e scrittura su file |
| 187 | | Aprire file e oggetti file |
| 188 | | Chiudere i file |
| 188 | | Aprire i file in scrittura o in altre modalità |
| 189 | | Le funzioni per leggere e scrivere testo o dati binari |
| 191 | | Uso della modalità binaria |
| 191 | | Leggere e scrivere con pathlib |
| 192 | | L’input e l’output su schermo e la redirezione |
| 194 | | Leggere dati binari strutturati con il modulo struct |
| 196 | | I file di oggetti |
| 199 | | Motivi per non utilizzare pickle |
| 199 | | Gli oggetti e il modulo shelve |
| 202 | | Riepilogo |
| 203 | Capitolo 14. | Eccezioni |
| 203 | | Introduzione alle eccezioni |
| 204 | | Filosofia generale di gestione degli errori e delle eccezioni |
| 206 | | Una definizione più formale delle eccezioni |
| 207 | | Gestione di vari tipi di eccezioni |
| 207 | | Le eccezioni in Python |
| 208 | | Tipi di eccezioni in Python |
| 210 | | Lancio di eccezioni |
| 211 | | Raccolta e gestione delle eccezioni |
| 212 | | Definizione di nuove eccezioni |
| 213 | | Debugging di programmi con l’istruzione assert |
| 214 | | La gerarchia di ereditarietà delle eccezioni |
| 215 | | Esempio: un programma di scrittura su disco in Python |
| 215 | | Esempio: eccezioni nella normale valutazione |
| 217 | | Dove utilizzare le eccezioni |
| 217 | | I gestori di contesto con la parola chiave with |
| 218 | | Riepilogo |
| 0.19 | | Ringraziamenti |
| 219 | Parte III. | Funzionalità avanzate del linguaggio |
| 221 | Capitolo 15. | Classi e programmazione a oggetti |
| 221 | | La definizione delle classi |
| 222 | | Uso di un’istanza di una classe come una struttura o un record |
| 223 | | Le variabili d’istanza |
| 223 | | I metodi |
| 225 | | Le variabili di classe |
| 227 | | Una particolarità delle variabili di classe |
| 228 | | I metodi statici e i metodi di classe |
| 228 | | Metodi statici |
| 229 | | Metodi di classe |
| 230 | | L’ereditarietà |
| 232 | | L’ereditarietà con le variabili di classe e d’istanza |
| 234 | | Per ricapitolare: le basi delle classi in Python |
| 236 | | Le variabili private e i metodi privati |
| 237 | | Usare @property per migliorare la flessibilità delle variabili d’istanza |
| 238 | | Le regole di visibilità e i namespace per le istanze delle classi |
| 243 | | I distruttori e la gestione della memoria |
| 243 | | L’ereditarietà multipla |
| 246 | | Riepilogo |
| 247 | Capitolo 16. | Espressioni regolari |
| 247 | | Che cos’è un’espressione regolare? |
| 248 | | Le espressioni regolari con caratteri speciali |
| 249 | | Le espressioni regolari e le stringhe grezze |
| 250 | | Utilizzo delle stringhe grezze |
| 251 | | Estrarre testi dalle stringhe |
| 255 | | Sostituire del testo tramite espressioni regolari |
| 256 | | Riepilogo |
| 257 | Capitolo 17. | Tipi di dati come oggetti |
| 257 | | Anche i tipi sono oggetti |
| 258 | | Usare i tipi |
| 258 | | I tipi e le classi definiti dall’utente |
| 260 | | La determinazione del tipo “ad anatra” |
| 261 | | Che cos’è un metodo-attributo speciale? |
| 262 | | Creare un oggetto che si comporta come una lista |
| 263 | | Il metodo-attributo speciale __getitem__ |
| 264 | | Come funziona |
| 265 | | Implementazione completa delle funzionalità di una lista |
| 265 | | Fornire a un oggetto tutte le funzionalità di una lista |
| 268 | | Le sottoclassi dei tipi built-in |
| 268 | | Sottoclasse di una lista |
| 269 | | Sottoclasse di UserList |
| 270 | | Quando utilizzare i metodi-attributi speciali |
| 271 | | Riepilogo |
| 273 | Capitolo 18. | Package |
| 273 | | Che cos’è un package? |
| 274 | | Un primo esempio |
| 275 | | Un esempio concreto |
| 276 | | I file __init__.py nei package |
| 277 | | Utilizzo di base del package mathproj |
| 277 | | Caricamento di sub-package e sub-moduli |
| 278 | | Istruzioni di importazione all’interno dei package |
| 279 | | L’attributo __all__ |
| 280 | | L’utilizzo corretto dei package |
| 281 | | Riepilogo |
| 283 | Capitolo 19. | Uso delle librerie Python |
| 283 | | La filosofia “batterie incluse”: la libreria standard |
| 284 | | Gestione dei vari tipi di dati |
| 285 | | Manipolazione di file e memoria |
| 285 | | Accesso ai servizi del sistema operativo |
| 286 | | Uso dei protocolli e dei formati Internet |
| 287 | | Strumenti di sviluppo e debugging e servizi runtime |
| 287 | | Oltre la libreria standard |
| 288 | | Aggiungere altre librerie Python |
| 288 | | Installare le librerie Python utilizzando pip e venv |
| 289 | | Installazione con il flag -user |
| 289 | | Ambienti virtuali |
| 290 | | PyPI (alias “The Cheese Shop”) |
| 290 | | Riepilogo |
| 291 | Parte IV. | Gestione dei dati |
| 0.21 | | Introduzione |
| 293 | Capitolo 20. | Le basi della manipolazione dei file |
| 293 | | Il problema: l’incessante flusso di file di dati |
| 294 | | Lo scenario: un feed di prodotti, in arrivo da chissà dove |
| 296 | | Una migliore organizzazione |
| 297 | | Risparmiare spazio su disco: compressione e potatura |
| 298 | | Compressione dei file |
| 299 | | Potatura di file |
| 300 | | Riepilogo |
| 301 | | Le operazioni ETL |
| 302 | | Leggere file di testo |
| 302 | | La codifica del testo: ASCII, Unicode e altri |
| 304 | | Testo non strutturato |
| 306 | | File di testo delimitati |
| 307 | | Il modulo csv |
| 310 | | Lettura di un file CSV come una lista di dizionari |
| 311 | | I file di Excel |
| 313 | | Ripulire i dati |
| 313 | | Pulizia |
| 314 | | Ordinamento |
| 315 | | Problemi e trappole nella pulizia dei dati |
| 315 | | Scrivere file di dati |
| 316 | | CSV e altri file delimitati |
| 301 | Capitolo 21. | Elaborazione di file di dati |
| 317 | | Scrittura di file di Excel |
| 317 | | Package di file di dati |
| 318 | | Riepilogo |
| 319 | Capitolo 22. | Dati in rete |
| 319 | | Leggere i file |
| 320 | | Usare Python per scaricare file da un server FTP |
| 321 | | Lettura di file con SFTP |
| 322 | | Lettura dei file su HTTP/HTTPS |
| 323 | | Leggere i dati tramite un’API |
| 325 | | I formati strutturati per i dati |
| 325 | | Dati JSON |
| 329 | | Dati XML |
| 333 | | Scaricare dati dal Web |
| 338 | | Riepilogo |
| 339 | Capitolo 23. | Salvataggio dei dati |
| 339 | | I database relazionali |
| 340 | | La Database API di Python |
| 340 | | SQLite: uso del database sqlite3 |
| 342 | | Usare MySQL, PostgreSQL e altri database relazionali |
| 343 | | Semplificare la gestione dei database con un ORM |
| 343 | | SQLAlchemy |
| 347 | | Uso di Alembic per modificare lo schema del database |
| 350 | | I database NoSQL |
| 351 | | Usare archivi chiave:valore con Redis |
| 354 | | Archiviare documenti con MongoDB |
| 357 | | Riepilogo |
| 359 | Capitolo 24. | Esplorazione dei dati |
| 359 | | Gli strumenti offerti da Python per l’esplorazione dei dati |
| 359 | | I vantaggi di Python nell’esplorazione dei dati |
| 360 | | Python può essere meglio di un foglio di lavoro |
| 360 | | Notebook Jupyter |
| 361 | | Avvio di un kernel |
| 362 | | Esecuzione del codice in una cella |
| 363 | | Python e pandas |
| 363 | | Perché usare pandas |
| 363 | | Installazione di pandas |
| 364 | | Data frame |
| 366 | | Ripulire i dati |
| 366 | | Caricamento e salvataggio dei dati con pandas |
| 368 | | Pulizia dei dati con un data frame |
| 370 | | Aggregare e manipolare i dati |
| 371 | | Unione di data frame |
| 372 | | Selezione dei dati |
| 373 | | Raggruppamento e aggregazione |
| 375 | | Tracciare i dati |
| 375 | | Perché non utilizzare pandas |
| 376 | | Riepilogo |
| 377 | [] | Caso di studio |
| 378 | | Download dei dati |
| 381 | | Analisi dei dati |
| 382 | | Scelta di una stazione sulla base dei valori di latitudine e longitudine |
| 384 | | Scelta di una stazione e prelievo dei metadati della stazione |
| 387 | | Lettura e analisi dei dati meteorologici |
| 387 | | Lettura dei dati |
| 388 | | Parsing dei dati meteorologici |
| 391 | | Salvataggio dei dati meteorologici in un database (opzionale) |
| 392 | | Selezione e rappresentazione grafica dei dati |
| 392 | | Uso di pandas per il trattamento grafico dei dati |
| 395 | Appendice A. | Guida alla documentazione di Python |
| 396 | | L’accesso alla documentazione Python via Web |
| 396 | | Sfogliare la documentazione di Python sul computer |
| 398 | | Download della documentazione |
| 399 | | Consigli pratici: come programmare in stile Python |
| 399 | | Dieci suggerimenti per diventare Pythonista |
| 401 | | PEP 8: guida stilistica per il codice Python |
| 401 | | Introduzione |
| 402 | | Disposizione del codice |
| 406 | | Commenti |
| 408 | | Convenzioni di denominazione |
| 412 | | Consigli di programmazione |
| 415 | | Altre guide di stile per Python |
| 415 | | Lo Zen di Python |
| 417 | Appendice B. | Soluzioni degli esercizi |
| 465 | | Indice analitico |
| 470 | | _ |
| 472 | | ___ |