Sei sulla pagina 1di 7

IMPARARE PYTON

• Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
• I primi passi
• 1.1 Qualche informazione su Python... . . . . . . . . . . . . . . . .11
• 1.1.1’Open Source’ significa gratuito? . . . . . . . . . . . . . . . . .11
• 1.1.2 Cosa vuol dire Cross-Plattform? . . . . . . . . . . . . . . . . .12
• 1.1.3 Cosa significa ‘interpretato’? . . . . . . . . . . . . . . . . . . .12
• 1.1.4 Quindi i programmi scritti in Python sono ‘lenti’? . . . .13
• 1.1.5 L’interpretazione mi obbliga a rilasciare i miei sorgenti? 14
• 1.1.6 Cosa significa ‘multiparadigma’? . . . . . . . . . . . . . . . .14
• 1.1.7 Che significa: ‘a tipizzazione dinamica e forte’? . . . . 15
• 1.1.8 Che cos’è la ‘libreria standard’? . . . . . . . . . . . . . . . . .16
• 1.1.9 Python serve solo a scrivere script? . . . . . . . . . . . . . 16
• 1.1.10 D’accordo, voglio installarlo. Come faccio? . . . . . . .17
• 1.2 ...e un breve giro di prova . . . . . . . . . . . . . . . . . . . . . . .19
• 1.2.1 Usare l’interprete . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
• 1.2.2 Creare ed eseguire script . . . . . . . . . . . . . . . . . . . . . 20
• 1.2.3 Usare le variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
• 1.2.4 Richiedere un input all’utente . . . . . . . . . . . . . . . . . .22
• 1.2.5 Commenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
• Numeri ed espressioni
• 2.1 Tipi numerici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
• 2.1.1 Int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
• 2.1.2 long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
• 2.1.3 float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
• 2.1.4 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
• 2.2 Le operazioni aritmetiche . . . . . . . . . . . . . . . . . . . . . .33
• 2.2.1 Precedenza, parentesi e leggibilità . . . . . . . . . . . . . 33
• 2.2.2 Divisione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
• 2.2.3 Operatore”in place” . . . . . . . . . . . . . . . . . . . . . . . . .37
• 2.3 Operatori bit-a-bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
• 2.4 Operatori relazionali . . . . . . . . . . . . . . . . . . . . . . . . . . 40
• 2.4.1 Confrontare espressioni . . . . . . . . . . . . . . . . . . . . . 40
• 2.4.2 Bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
• 2.5 Operatori logici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
• 2.5.1 Not, and e or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
• 2.5.2 L’operatore ternario . . . . . . . . . . . . . . . . . . . . . . . . . .44
• 2.6 Funzioni matematiche . . . . . . . . . . . . . . . . . . . . . . . . . 46
• 2.7 Andare oltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
• Contenitori
• 3.1 Tuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
• 3.1.1 Creare una tupla . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
• 3.1.2 Indentazione di più elementi . . . . . . . . . . . . . . . . . . .51
• 3.1.3 Funzioni builtin e Operatori . . . . . . . . . . . . . . . . . . . .51
• 3.1.4 Accedere ad un elemento . . . . . . . . . . . . . . . . . . . . 53
• 3.1.5 Slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
• 3.1.6 Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
• 3.2 Stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
• 3.2.1 Creare una stringa . . . . . . . . . . . . . . . . . . . . . . . . . . 56
• 3.2.2 L’operatore % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58
• 3.2.3 Metodi delle stringhe . . . . . . . . . . . . . . . . . . . . . . . . .59
• 3.3 Numeri, stringhe e tuple sono immutabili . . . . . . . . . . .60

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
• 3.3.1 Cosa succede in un assegnamento . . . . . . . . . . . . . 61
• 3.3.2 Gerarchie immutabili . . . . . . . . . . . . . . . . . . . . . . . . .63
• 3.4 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
• 3.4.1 Creare una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
• 3.4.2 Assegnamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
• 3.4.3 Aggiungere elementi . . . . . . . . . . . . . . . . . . . . . . . . .66
• 3.4.4 Rimuovere elementi . . . . . . . . . . . . . . . . . . . . . . . . . .67
• 3.4.5 Riarrangiare gli elemnti . . . . . . . . . . . . . . . . . . . . . . .67
• 3.5 Le liste sono mutabili! . . . . . . . . . . . . . . . . . . . . . . . . .68
• 3.5.1 Copia superficiale . . . . . . . . . . . . . . . . . . . . . . . . . . .68
• 3.5.2 Copia profonda . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
• 3.5.3 Gerarchie ricorsive . . . . . . . . . . . . . . . . . . . . . . . . . .72
• 3.6 Dizionari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
• 3.6.1 Creare un dizionario . . . . . . . . . . . . . . . . . . . . . . . . .73
• 3.6.2 Accesso agli elementi e assegnamento . . . . . . . . . 73
• 3.6.3 Usi ‘furbi’ dei dizionari . . . . . . . . . . . . . . . . . . . . . . . .75
• 3.7 Insiemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
• 3.7.1 Creare un insieme . . . . . . . . . . . . . . . . . . . . . . . . . . .76
• 3.7.2 Operazioni sugli insiemi . . . . . . . . . . . . . . . . . . . . . . .76
• 3.8 Iteratori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..77
• 3.8.1 Creare un iteratore . . . . . . . . . . . . . . . . . . . . . . . . . .77
• 3.8.2 Altri tipi di iteratori . . . . . . . . . . . . . . . . . . . . . . . . . . .79
• Controllo del flusso
• 4.1 If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
• 4.1.1 If...else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
• 4.1.2 If...elif...else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
• 4.2 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
• 4.2.1 Ciclo infinito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
• 4.2.2 Pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
• 4.2.3 Continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
• 4.2.4 Break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
• 4.2.5 while...else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90
• 4.3 For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
• 4.3.1 Sintassi e uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
• 4.3.2 For e i dizionari . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
• 4.3.3 For, range, xrange . . . . . . . . . . . . . . . . . . . . . . . . . . 93
• 4.3.4 For e gli iteratori . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
• 4.4 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
• Funzioni e moduli
• 5.1 Funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97
• 5.1.1 Creare una funzione . . . . . . . . . . . . . . . . . . . . . . . . .97
• 5.1.2 Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
• 5.2 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
• 5.2.1 Lo Scope Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
• 5.2.2 Variabili globali e locali . . . . . . . . . . . . . . . . . . . . . .102
• 5.2.3 Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
• 5.2.4 Funzioni innestate . . . . . . . . . . . . . . . . . . . . . . . . . .106
• 5.3 Argomenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
• 5.3.1 Passaggio per assegnamento . . . . . . . . . . . . . . . . .107
• 5.3.2 Argomenti predefiniti . . . . . . . . . . . . . . . . . . . . . . . .108
• 5.3.3 Associazione degli argomenti per nome . . . . . . . . . 109
• 5.3.4 Definire funzioni con argomenti variabili . . . . . . . . . .110

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
• 5.3.5 Richiamare funzioni con la sintassi estesa . . . . . . 111
• 5.4 Programmazione funzionale . . . . . . . . . . . . . . . . . . . 112
• 5.4.1 Lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
• 5.4.2 Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
• 5.4.3 Zip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
• 5.4.4 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
• 5.4.5 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
• 5.4.5 List comprehension . . . . . . . . . . . . . . . . . . . . . . . . .115
• 5.4.7 Generatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
• 5.4.6 Generator Expression . . . . . . . . . . . . . . . . . . . . . . 119
• 5.5 Moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
• 5.5.1 Cos’è un modulo . . . . . . . . . . . . . . . . . . . . . . . . . . .120
• 5.5.2 Importare un modulo . . . . . . . . . . . . . . . . . . . . . . . .120
• 5.5.3 Elencare gli attributi di un modulo . . . . . . . . . . . . . .122
• 5.5.4 Ricaricare un modulo . . . . . . . . . . . . . . . . . . . . . . . .123
• 5.5.5 Sintassi estese di import . . . . . . . . . . . . . . . . . . . . . 124
• 5.5.6 Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
• 5.5.7 Evitare collisioni . . . . . . . . . . . . . . . . . . . . . . . . . . .126
• 5.6 Docstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
• 5.7 ARGV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
• 5.8 Importare ed eseguire . . . . . . . . . . . . . . . . . . . . . . . . 130
• 5.9 Andare avanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
• Classi ed eccezioni

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
• 6.1 Creare una classe . . . . . . . . . . . . . . . . . . . . . . . . . 133
• 6.2 Istanziare una classe . . . . . . . . . . . . . . . . . . . . . . . 134
• 6.3 Metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
• 6.4 Init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
• 6.5 Ereditarietà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
• 6.6 Metodi speciali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
• 6.6.1 Conversioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
• 6.6.2 Altri operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
• 6.7 Attributi ‘nascosti’ . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
• 6.8 Proprietà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
• 6.9 Eccezioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
• 6.9.1 Propagazione delle eccezioni . . . . . . . . . . . . . . . . . 149
• 6.9.2 Lanciare un’eccezione . . . . . . . . . . . . . . . . . . . . . . .150
• 6.9.3 Gestire un’eccezione . . . . . . . . . . . . . . . . . . . . . . . .151
• 6.9.4 Eccezioni e protocolli . . . . . . . . . . . . . . . . . . . . . . . .154
• 6.10 Andare avanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156

Scaricalo gratis su http://www.punto-informatico.it/PILibri


IMPARARE PYTON
INTRODUZIONE
E così avete deciso di imparare a programmare in Python. Ottima scelta!
Se non avete mai programmato prima, Python è probabilmente il
linguaggio migliore per iniziare: è semplice, chiaro, potente e versatile. E,
soprattutto, è divertente: grazie all’interprete potrete chiarire i vostri dubbi
scrivendo codice interattivamente, ottenendo una risposta immediata; la
funzione help potrà chiarirvi subito il significato di parole chiave, moduli e
classi; gli oggetti builtin e la corposa libreria standard, infine, vi
permetteranno di ottenere il massimo risultato con il minimo sforzo.
Questo libro vi introdurrà a queste ed altre operazioni, e alla fine della
lettura sarete pronti a scrivere script e programmi, in modo OOP e pulito.
Se, invece, venite da linguaggi di più basso livello, come C e C++, Python
vi stupirà con effetti speciali che difficilmente avreste creduto possibili,
come ad esempio la capacità di invocare dinamicamente classi e funzioni
a partire da semplici stringhe, di creare tipi a run-time e di analizzarne la
struttura attraverso dei comodi dizionari. Se avete sempre programmato
con linguaggi a tipizzazione statica (come C++, Java e C#), preparatevi a
un mondo in cui le variabili non vanno dichiarate prima dell’uso, in cui non
è necessario conoscerne a priori il tipo, quanto piuttosto verificare che
implementino il protocollo che volete usare. Questo libro è pensato anche
per voi: di quando in quando, segnalerò alcune somiglianze e
discrepanze fra Python e altri linguaggi, e soprattutto gli errori più comuni
in cui tendono a incorrere i programmatori provenienti da altri mondi,
quando tentano di “tradurre” istintivamente i propri schemi mentali in
Python.

Scaricalo gratis su http://www.punto-informatico.it/PILibri

Potrebbero piacerti anche