# 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. `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