Tutorial su Python
******************

Python è un linguaggio di programmazione potente e facile da imparare.
Dispone di strutture di dati efficienti e di alto livello e di un
approccio semplice ma efficace alla programmazione orientata agli
oggetti. La sintassi elegante e la tipizzazione dinamica di Python,
insieme alla sua natura interpretata, ne fanno un linguaggio ideale
per lo scripting e il rapido sviluppo di applicazioni in molte aree
per la maggior parte delle piattaforme.

L'interprete Python e l'ampia libreria standard sono liberamente
disponibili in forma di codici sorgenti o binari per tutte le
principali piattaforme dal sito web di Python,
https://www.python.org/, e possono essere distribuiti gratuitamente.
Lo stesso sito contiene anche distribuzioni e link a molti moduli,
programmi e strumenti Python di terze parti gratuiti e documentazione
aggiuntiva.

L'interprete Python è facilmente ampliabile con nuove funzioni e tipi
di dati implementati in C o C++ (o altri linguaggi richiamabili da C).
Python è adatto anche come linguaggio di estensione per applicazioni
personalizzabili.

Questo tutorial introduce il lettore in modo informale ai concetti di
base e alle caratteristiche del linguaggio e del sistema Python. Aiuta
ad avere un interprete Python a portata di mano per un'esperienza
pratica, ma tutti gli esempi sono autonomi, così il tutorial può
essere letto anche off-line.

Per una descrizione degli oggetti e dei moduli standard, si veda The
Python Standard Library. The Python Language Reference fornisce una
definizione più formale del linguaggio.  Per scrivere le estensioni in
C o C++, si legga Extending and Embedding the Python Interpreter e
Python/C API Reference Manual. Ci sono anche diversi libri che coprono
Python in profondità.

Questo tutorial non vuole essere completo e coprire ogni singola
caratteristica, come pure ogni caratteristica usata comunemente.
Invece, introduce molte delle caratteristiche più importanti di
Python, e vi darà una buona idea sullo stile del linguaggio. Dopo
averlo letto, sarete in grado di leggere e scrivere moduli e programmi
Python, e sarete pronti per saperne di più sui vari moduli della
libreria Python, i quali sono descritti in The Python Standard
Library.

Anche il Glossary vale la pena di essere sfogliato.

* 1. Stuzzichiamo il tuo appetito

* 2. Uso dell'interprete di Python

  * 2.1. Invocazione dell'interprete

    * 2.1.1. Passare Argomenti

    * 2.1.2. Modalità Interattiva

  * 2.2. L'interprete e il suo ambiente

    * 2.2.1. Codifica del codice sorgente

* 3. Un'introduzione informale a Python

  * 3.1. Usare Python come calcolatrice

    * 3.1.1. Numeri

    * 3.1.2. Testo

    * 3.1.3. Liste

  * 3.2. Primi passi di programmazione

* 4. Altri Strumenti di Controllo del Flusso

  * 4.1. Istruzioni "if"

  * 4.2. Istruzioni "for"

  * 4.3. La Funzione "range()"

  * 4.4. Istruzioni "break" e "continue", e clausole "else" nei cicli

  * 4.5. Istruzioni "pass"

  * 4.6. Istruzioni "match"

  * 4.7. Definizione di Funzioni

  * 4.8. Ulteriori informazioni sulla Definizione di Funzioni

    * 4.8.1. Valori predefiniti degli argomenti

    * 4.8.2. Argomenti chiave-valore

    * 4.8.3. Parametri speciali

      * 4.8.3.1. Argomenti Posizionali o per Chiave

      * 4.8.3.2. Parametri Solo per Posizione

      * 4.8.3.3. Argomenti Solo per Chiave

      * 4.8.3.4. Esempi di Funzioni

      * 4.8.3.5. Riepilogo

    * 4.8.4. Liste di Argomenti Arbitrarie

    * 4.8.5. Spacchettamento delle Liste di Argomenti

    * 4.8.6. Espressioni Lambda

    * 4.8.7. Stringhe di Documentazione

    * 4.8.8. Annotationi delle Funzioni

  * 4.9. Intermezzo: Stile di Codifica

* 5. Strutture Dati

  * 5.1. Più sulle Liste

    * 5.1.1. Usare le Liste come Pile

    * 5.1.2. Usare le Liste come Code

    * 5.1.3. Comprensioni di Lista

    * 5.1.4. Comprensioni di Lista Nidificate

  * 5.2. L'istruzione "del"

  * 5.3. Tuple e Sequenze

  * 5.4. Insiemi

  * 5.5. Dizionari

  * 5.6. Tecniche di Looping

  * 5.7. Maggiori informazioni sulle Condizioni

  * 5.8. Confronto tra Sequenze e Altri Tipi

* 6. Moduli

  * 6.1. Più sui Moduli

    * 6.1.1. Esecuzione di moduli come script

    * 6.1.2. Il percorso di ricerca del modulo

    * 6.1.3. File Python "compilati"

  * 6.2. Moduli Standard

  * 6.3. La funzione "dir()"

  * 6.4. Pacchetti

    * 6.4.1. Importare * Da un Pacchetto

    * 6.4.2. Riferimenti Intra-pacchetto

    * 6.4.3. Pacchetti in Directory Multiple

* 7. Input e Output

  * 7.1. Formattazione Avanzata dell'Output

    * 7.1.1. Stringhe Formattate Letterali

    * 7.1.2. Il Metodo String format()

    * 7.1.3. Formattazione Manuale delle Stringhe

    * 7.1.4. Vecchia formattazione delle stringhe

  * 7.2. Lettura e Scrittura di File

    * 7.2.1. Metodi degli Oggetti File

    * 7.2.2. Salvare dati strutturati con "json"

* 8. Errori ed Eccezioni

  * 8.1. Errori di Sintassi

  * 8.2. Eccezioni

  * 8.3. Gestione delle Eccezioni

  * 8.4. Sollevare Eccezioni

  * 8.5. Collegamento delle Eccezioni

  * 8.6. Eccezioni Definite dall'Utente

  * 8.7. Definizione di Azioni di Pulizia

  * 8.8. Azioni di Pulizia Predefinite

  * 8.9. Sollevare e Gestire Eccezioni Multiple e Non Correlate

  * 8.10. Arricchire le Eccezioni con Note

* 9. Classi

  * 9.1. Una parola su nomi e oggetti

  * 9.2. Visibilità e spazi dei nomi in Python

    * 9.2.1. Esempio di visibilità e spazi dei nomi

  * 9.3. Una prima occhiata alle classi

    * 9.3.1. Sintassi della definizione di classe

    * 9.3.2. Oggetti della Classe

    * 9.3.3. Oggetti Istanza

    * 9.3.4. Oggetti Metodo

    * 9.3.5. Variabili di Classe e Istanza

  * 9.4. Osservazioni Varie

  * 9.5. Ereditarietà

    * 9.5.1. Ereditarietà Multipla

  * 9.6. Variabili Private

  * 9.7. Varie ed Eventuali

  * 9.8. Iteratori

  * 9.9. Generatori

  * 9.10. Espressioni di Generatore

* 10. Breve Panoramica della Libreria Standard

  * 10.1. Interfaccia del Sistema Operativo

  * 10.2. Metacaratteri nei Nomfile

  * 10.3. Argomenti dalla Linea di Comando

  * 10.4. Reindirizzamento dell'Uscita degli Errori e Terminazione del
    Programma

  * 10.5. Pattern Matching di Stringhe

  * 10.6. Matematica

  * 10.7. Accesso a Internet

  * 10.8. Date e Orari

  * 10.9. Compressione dei Dati

  * 10.10. Misurazione delle Prestazioni

  * 10.11. Controllo della Qualità

  * 10.12. Batterie Incluse

* 11. Giro Breve della Libreria Standard --- Parte II

  * 11.1. Formattazione dell'Output

  * 11.2. Templating

  * 11.3. Lavorare con Layout Binari dei Dati

  * 11.4. Multi-threading

  * 11.5. Logging

  * 11.6. Riferimenti Deboli

  * 11.7. Strumenti per Lavorare con Liste

  * 11.8. Decimal Floating-Point Arithmetic

* 12. Ambienti Virtuali e Pacchetti

  * 12.1. Introduzione

  * 12.2. Creazione di Ambienti Virtuali

  * 12.3. Gestione dei Pacchetti con pip

* 13. E adesso?

* 14. Editing dell'input interattivo e sostituzione della history

  * 14.1. Completamento con il tasto Tab e modifica della history

  * 14.2. Alternative all'interprete interattivo

* 15. Floating-Point Arithmetic:  Issues and Limitations

  * 15.1. Errore di Rappresentazione

* 16. Appendice

  * 16.1. Modalità Interattiva

    * 16.1.1. Gestione degli Errori

    * 16.1.2. Script Eseguibili Python

    * 16.1.3. Il File di Avvio Interattivo

    * 16.1.4. I Moduli di Personalizzazione
