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

Suggerimento:

  This tutorial is designed for *programmers* that are new to the
  Python language, **not** *beginners* who are new to programming.

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.

This tutorial introduces the reader informally to the basic concepts
and features of the Python language and system. Be aware that it
expects you to have a basic understanding of programming in general.
It helps to have a Python interpreter handy for hands-on experience,
but all examples are self-contained, so the tutorial can be read off-
line as well.

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. "break" and "continue" Statements

  * 4.5. "else" Clauses on Loops

  * 4.6. Istruzioni "pass"

  * 4.7. Istruzioni "match"

  * 4.8. Definizione di Funzioni

  * 4.9. Ulteriori informazioni sulla Definizione di Funzioni

    * 4.9.1. Valori predefiniti degli argomenti

    * 4.9.2. Argomenti chiave-valore

    * 4.9.3. Parametri speciali

      * 4.9.3.1. Argomenti Posizionali o per Chiave

      * 4.9.3.2. Parametri Solo per Posizione

      * 4.9.3.3. Argomenti Solo per Chiave

      * 4.9.3.4. Esempi di Funzioni

      * 4.9.3.5. Riepilogo

    * 4.9.4. Liste di Argomenti Arbitrarie

    * 4.9.5. Spacchettamento delle Liste di Argomenti

    * 4.9.6. Espressioni Lambda

    * 4.9.7. Stringhe di Documentazione

    * 4.9.8. Annotationi delle Funzioni

  * 4.10. 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
