Home    Novità    Ricerca   In offerta   Consigliati   Prossimi arrivi   Bestsellers   Software    CBT  
P.Iva 01029770490   [Ordini telefonici 0586 210919]  Ordini rapidi 
Ricerca Veloce   per Titolo o ISBN  [Mailing delle novità]   [Servizio di CallBack]  
  Argomenti 

  Applicazioni
  CAD
  Certificazione e formazione
  Commercio elettronico
  Cultura Informatica
  Database
  Dizionari
  Elettronica
  Enterprise
  Grafica
  Hardware
  Internet
  Legislazione informatica
  Multimedia
  Progettazione WEB
  Programmazione
  Reti e telecomunicazioni
  Sicurezza
  Sistemi operativi
  Tecnologia e societa'
  Universita' e ricerca
ProgrammazioneLinguaggi di programmazionePython



Imparare Python - terza edizione
EditoreTecniche Nuove
AutoreLutz Mark
Titolo originaleLearning Python third edition
Editore originaleO'Reilly
Pagine717
Volumi1
LivelloPer-Tutti
LinguaItaliano
Data pubblicazione07 - 2008
ISBN9788848120906


 Prezzo di copertina 
 Euro 54,90  

 Presentazione       Indice      

Prefazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Parte I. Per cominciare
1. Domande e risposte su Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Perché usare Python? 3
Qualità del software 5
Produttività di sviluppo 5
Python è un “linguaggio di scripting”? 6
Bene, ma quali sono gli svantaggi? 7
Chi usa Python oggi? 8
Cosa si può fare con Python? 9
Programmazione di sistema 9
GUI 10
Scripting Internet 10
Integrazione di componenti 11
Programmazione di database 11
Prototipazione rapida 11
Programmazione numerica e scientifica 12
Giochi, immagini, AI, XML e altre cose 12
Quali sono i punti di forza di Python dal punto di vista tecnico? 12
E’ orientato agli oggetti 13
È open source 13
È portabile 13
È potente 14
È interoperabile con altri componenti 16
È facile da usare 16
È facile da imparare 16
Il suo nome deriva dai Monty Python 18
Quali sono le differenze tra Python e gli altri linguaggi di programmazione? 19
Riassunto 19
Domande 21
Risposte 21

2. Come Python esegue i programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Introduzione all’interprete Python 23
Esecuzione dei programmi 24
La prospettiva del programmatore 24
La prospettiva di Python 26
Compilazione in byte-code 26
La macchina virtuale Python 27
Implicazioni sulle prestazioni 27
Implicazioni sullo sviluppo 28
Modelli d’esecuzione alternativi 29
Implementazioni Python alternative 29
CPython 29
Jython 29
IronPython 30
Strumenti che ottimizzano il modello di esecuzione 30
Il compilatore just-in-time Psyco 31
Il traduttore C++ Shedskin 32
Binari congelati 32
Possibilità future? 33
Riassunto 34
Domande 35
Risposte 35

3. Come voi eseguite i programmi Python . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Codifica interattiva 36
Usare il prompt interattivo 38
Linea di comando e file 40
Usare la linea di comando e i file 42
Script eseguibili Unix (#!) 43
Cliccare sulle icone dei file 44
Cliccare sulle icone in Windows 45
Il trucco del raw_input 46
Altre limitazioni del clic sulle icone 48
Importare e ricaricare i moduli 48
Approfondimento sui moduli: gli attributi 50
Moduli e spazi di nomi 52
Import e reload: note d’uso 52
IDLE 53
Uso di base 54
Alcuni consigli 55
Strumenti avanzati di IDLE 57
Altri ambienti di sviluppo grafici 58
Inglobare le chiamate 59
Eseguibili contenenti binari congelati 60
Opzioni di esecuzione degli editor di testo 60
Sommario | vii
Altre opzioni di esecuzione 60
Il futuro 60
Quali opzioni usare? 61
Riassunto 61
Domande 62
Risposte 62
Esercizi relativi alla Parte I 64

Parte II. Tipi e operazioni

4. Introduzione ai tipi di oggetti Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Perché usare i tipi precostituiti? 70
I tipi dati di base di Python 71
Numeri 72
Stringhe 74
Operazioni sulle sequenze 74
Immutabilità 76
Metodi specifici dei tipi 76
Ottenere aiuto 77
Altri modi per elaborare le stringhe 78
Ricerca di corrispondenze 79
Liste 80
Operazioni sulle sequenze 80
Operazioni specifiche per le liste 80
Verifica degli estremi 81
Annidamento 82
Espressioni di mappatura 82
Dizionari 83
Operazioni sui dizionari 84
Annidamenti rivisitati 84
Ordinamento delle chiavi: cicli for 86
Iterazioni e ottimizzazione 87
Chiavi mancanti e test if 88
Tuple 89
Perché esistono le tuple? 90
File 90
Altri strumenti simili ai file 91
Altri tipi di oggetti base 91
Come rendere il codice poco flessibile 92
Classi definite dall’utente 93
Tutto il resto 95
Riassunto 95
Domande 96
Risposte 96

5. Numeri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
I tipi numerici di Python 97
Letterali numerici 98
Strumenti ed estensioni precostituiti 99
Operatori per le espressioni 100
Operatori e precedenza nelle espressioni miste 101
Parentesi per raggruppare sottoespressioni 102
Se necessario, i tipi vengono convertiti verso l’alto 102
Anteprima: overloading degli operatori 103
Tipi numerici in pratica 103
Variabili ed espressioni semplici 103
Formati di visualizzazione numerica 105
Divisione: classica, floor e vera 107
Operazioni a livello di bit 108
Interi lunghi 108
Numeri complessi 109
Notazione esadecimale e ottale 110
Altri strumenti numerici predefiniti 111
Altri tipi numerici 112
Numeri decimali 112
Insiemi 113
Booleani 115
Estensioni di terze parti 115
Riassunto 115
Domande 117
Risposte 117

6. Tipizzazione dinamica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Il motivo della mancanza delle dichiarazioni di tipo 119
Variabili, oggetti e referenze 120
I tipi sono associati agli oggetti, non alle variabili 121
La memoria viene gestita automaticamente 122
Referenze condivise 123
Referenze condivise e modifiche sul posto 125
Referenze condivise e test di uguaglianza 127
La tipizzazione dinamica è ovunque! 128
Riassunto 129
Domande 130
Risposte 130

7. Stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Letterali stringa 132
Le stringhe tra singoli e doppi apici hanno lo stesso significato 133
Le sequenze di escape rappresentano byte speciali 133
Le stringhe raw rendono inutili gli escape 136
Apici tripli codificano blocchi di stringhe multiriga 137
Stringhe Unicode codificano altri set di caratteri 138
Stringhe in pratica 140
Operazioni di base 140
Indirizzamento e sezionamento 141
L’indirizzamento (S[i]) estrae singoli elementi tramite indici 142
L’indirizzamento (S[i:j]) estrae elementi contigui da una sequenza 142
Sezionamenti estesi: il terzo indice 144
Strumenti di conversione per le stringhe 144
Conversioni di caratteri 145
Modifica delle stringhe 146
Formattazione di stringhe 147
Formattazioni di stringa evolute 149
Formattazioni di stringa tramite dizionari 150
Metodi di stringa 151
Esempi di metodi: modifica delle stringhe 151
Esempi di metodi: analisi del testo 154
Altri esempi 155
Il modulo string originale 156
Categorie generali di tipi 157
I tipi condividono le operazioni caratteristiche delle categorie 157
Solo i tipi mutabili possono essere modificati sul posto 158
Riassunto 158
Domande 159
Risposte 159

8. Liste e dizionari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Liste 160
Liste in pratica 162
Operazioni di base 163
Indirizzamento, sezionamento e matrici 163
Modifica sul posto 164
Assegnamenti tramite indirizzamento e sezionamento 164
Chiamate ai metodi di lista 165
Altre comuni operazioni 167
Dizionari 168
Dizionari in pratica 170
Operazioni di base 170
Modifica sul posto 171
Altri metodi 172
Una tabella di linguaggi 173
Note d’uso 174
Dizionari per simulare liste flessibili 175
Dizionari come strutture dati sparse 175
Evitare gli errori di chiavi mancanti 176
Dizionari come “record” 176
Metodi alternativi per creare dizionari 177
Riassunto 179
Domande 180
Risposte 180

9. Tuple, File e tutto il resto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Tuple 181
Tuple in pratica 182
Peculiarità sintattiche: virgole e parentesi 183
Conversioni e immutabilità 183
Perché liste e tuple? 185
File 185
Apertura dei file 185
Uso degli oggetti di tipo file 186
File in pratica 187
Memorizzare e analizzare gli oggetti Python in dei file 187
Memorizzare oggetti Python nativi tramite pickle 189
Memorizzare in file dati binari 190
Altri strumenti per i file 191
Rivisitazione delle categorie generali di tipi 192
Generalità sugli oggetti 193
Referenze e copie 193
Confronti, uguaglianza e verità 196
Il significato di vero e falso in Python 198
La gerarchia dei tipi Python 199
Altri tipi Python 200
Trappole d’uso per i tipi base 201
Gli assegnamenti creano referenze, non copie 201
Le ripetizioni aggiungono nuovi livelli di annidamento 202
Attenzione alle strutture dati cicliche 202
I tipi immutabili non possono essere modificati sul posto 203
Riassunto 203
Domande 204
Risposte 204
Esercizi relativi alla parte II 205

Parte III. Istruzioni e sintassi

10. Introduzione alle istruzioni Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Rivisitazione della struttura dei programmi Python 211
Le istruzioni di Python 212
Tutta la sintassi in due if 213
Ciò che Python aggiunge 214
Ciò che Python toglie 214
Le parentesi sono opzionali 214
I fine riga segnalano la fine delle istruzioni 214
La fine di un rientro orizzontale significa la fine di un blocco 215
Perché la spaziatura orizzontale? 215
Alcuni casi speciali 218
Eccezioni riguardanti le istruzioni 218
Eccezioni riguardanti i blocchi 219
Esempi pratici 219
Un ciclo interattivo 220
Usare valori inseriti dall’utente per effettuare calcoli 221
Gestione degli errori 221
Gestire gli errori tramite istruzioni try 223
Tre livelli di annidamento 223
Riassunto 224
Domande 225
Risposte 225

11. Assegnamento, espressioni e print . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Istruzioni di assegnamento 226
Forme delle istruzioni di assegnamento 227
Assegnamenti di sequenza 228
Assegnamenti di sequenza: forme avanzate 229
Assegnamenti multipli 231
Assegnamenti multipli e referenze condivise 231
Assegnamenti estesi 232
Assegnamenti estesi e referenze condivise 234
Regole sui nomi di variabile 234
Convenzioni sui nomi 236
I nomi non hanno tipo, ma gli oggetti sì 236
Espressioni come istruzioni 237
Espressioni come istruzioni e modifiche sul posto 238
Istruzioni print 239
Il programma Python “Hello World” 240
Redirezione dello stream di output 240
L’estensione print >> file 241
Riassunto 244
Domande 245
Risposte 245

12. I test if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Le istruzioni if 246
Forma generale 246
Esempi di base 247
xii | Sommario
Blocchi con opzioni multiple 247
Regole di sintassi 249
Delimitatori di blocco 250
Delimitatori di istruzioni 251
Alcuni casi speciali 252
Test di verità 253
L’espressione ternaria if/else 255
Riassunto 256
Domande 258
Risposte 258

13. Cicli while e for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
L’istruzione while 259
Forma generale 259
Esempi 260
break, continue, pass e l’else dei cicli 261
Forma generale 261
Esempi 261
pass 261
continue 262
break 263
else 263
Altri dettagli sull’else dei cicli 264
L’istruzione for 265
Forma generale 266
Esempi 266
Uso di base 266
Altri tipi di oggetti 267
Assegnamenti di tupla nei for 267
Cicli for annidati 268
Iteratori: introduzione 269
Iteratori di file 271
Altri iteratori precostituiti 273
Altri contesti d’iterazione 273
Iteratori definiti dall’utente 275
Tecniche di codifica dei cicli 275
Cicli contatore: while e range 276
Iterazioni parziali: range 277
Modificare le liste: range 278
Attraversamenti paralleli: zip e map 279
Costruzione di dizionari tramite zip 280
Generare indici ed elementi: enumerate 281
Espressioni di mappatura di lista 282
Uso di base 283
Uso delle mappature di lista nell’accesso ai file 284
Sintassi estesa delle mappature di lista 284
Riassunto 286
Domande 287
Risposte 287

14. Documentazione del codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Le fonti della documentazione del codice Python 288
Commenti nel codice tramite # 289
La funzione dir 289
Le stringhe di documentazione: _ _doc_ _ 290
Docstring definite dall’utente 290
Gli standard per le Docstring 292
Docstrings precostituite 292
PyDoc: la funzione help 293
PyDoc: formattazione in HTML 295
I manuali della distribuzione standard 297
Risorse Web 298
Manuali 299
Trappole d’uso comuni 299
Riassunto 301
Domande 303
Risposte 303
Esercizi relativi alla parte III 304

Parte IV. Funzioni

15. Funzioni: concetti base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Perché usare le funzioni? 310
Codifica delle funzioni 310
Istruzioni def 312
Le def vengono valutate durante l’esecuzione del codice 312
Un primo esempio: definizione e chiamata 313
Definizione 313
Chiamata 314
Il polimorfismo in Python 314
Un secondo esempio: intersezione di sequenze 316
Definizione 316
Chiamata 316
Rivisitazione del polimorfismo 317
Variabili locali 318
Riassunto 318
Domande 319
Risposte 319

16. Scopi e argomenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Le regole sugli scopi 320
Le basi dei contesti Python 321
Risoluzione dei nomi: la regola LEGB 323
Un esempio di scopi 324
Lo scopo precostituito 325
L’istruzione global 326
Minimizzare l’uso di variabili globali 327
Minimizzare le modifiche cross-file 329
Altri modi per accedere ai nomi globali 330
Scopi e funzioni annidate 331
Dettagli sugli scopi annidati 331
Esempi di scopi annidati 332
Costruttori 332
Memorizzare lo stato dello scopo esterno tramite valori di default 334
Scopi annidati ed espressioni lambda 335
Scopi e default nelle variabili di ciclo 336
Annidamento arbitrario di scopi 337
Passaggio degli argomenti 337
Argomenti e referenze condivise 338
Evitare la modifica degli argomenti mutabili 340
Simulare parametri di output 341
Modalità speciali di accoppiamento degli argomenti 342
Esempi di argomenti keyword e default 343
Keyword 344
Argomenti di default 344
Esempi di argomenti arbitrari 345
Raccolta degli argomenti 345
Spacchettamento degli argomenti 346
Combinazioni di argomenti keyword e default 347
Una funzione per calcolare minimi 347
Crediti 348
Se volete il massimo dei voti 349
Un esempio più utile: funzioni generali per gli insiemi 350
Accoppiamento degli argomenti: ordine 351
Riassunto 353
Domande 354
Risposte 355

17. Argomenti avanzati sulle funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Funzioni anonime: lambda 356
Espressioni lambda 357
Perché usare le lambda? 358
Come (non) offuscare il codice Python 359
Lambda annidate e scopi 361
Sommario | xv
Chiamate di funzioni dinamiche: apply 361
La funzione precostituita apply 362
Passaggio di argomenti keyword 363
Sintassi di chiamata in stile apply 364
Mappare funzioni a sequenze: map 364
Programmazione funzionale: filter e reduce 366
Mappature 368
Espressioni di mappatura: le basi 368
Aggiungere test e cicli annidati 369
Espressioni da mappatura e matrici 371
Comprendere le mappature di sequenze 372
Iteratori rivisitati: generatori 373
Esempio di generatore 375
Protocollo esteso dei generatori: send e next 377
Iteratori e tipi precostituiti 377
Generatori come espressioni: iteratori e mappature 378
Cicli e velocità d’esecuzione 380
Progettazione delle funzioni 382
Le funzioni sono oggetti: chiamate indirette 384
Trappole d’uso sulle funzioni 385
I nomi locali sono rilevati staticamente 385
Argomenti di default e oggetti mutabili 387
Funzioni senza return 388
Variabili di ciclo degli scopi esterni 389
Riassunto 389
Domande 390
Risposte 390
Esercizi relativi alla parte IV 392

Parte V. Moduli

18. Moduli: il quadro generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Perché usare i moduli? 397
L’architettura dei programmi Python 398
Come strutturare un programma 399
Importazioni e attributi 399
I moduli della libreria standard 401
Come funzionano le importazioni 401
1. Trova il file 402
Il percorso di ricerca dei moduli 402
La lista sys.path 404
Selezione dei file di modulo 405
Concetti avanzati sulla selezione dei moduli 406
xvi | Sommario
2. Compila il modulo (forse) 406
3. Esegui il codice compilato 407
Riassunto 407
Domande 409
Risposte 409

19. Come scrivere i moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Creazione dei moduli 410
Uso dei moduli 411
L’istruzione import 411
L’istruzione from 412
L’istruzione from * 412
Le importazioni vengono effettuate una sola volta 412
import e from sono assegnamenti 413
Modifiche dei nomi tra file diversi 414
Equivalenza tra import e from 414
Potenziali problemi derivanti dall’uso di from 415
Quando import è obbligatoria 416
I moduli come spazi di nomi 417
I file generano degli spazi di nomi 417
Qualificazione dei nomi degli attributi 419
Importazioni e scopi 419
Annidamento degli spazi di nomi 420
reload dei moduli 421
reload: le basi 422
reload: un esempio 423
Riassunto 424
Domande 426
Risposte 426

20. I package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Importazione di package: le basi 427
Package e il percorso di ricerca dei moduli 428
Il file _ _init_ _.py dei package 429
Importazione di package: esempio 430
from e import con i package 432
Perché usare le importazioni di package? 432
Una storia di tre sistemi 433
Riassunto 436
Domande 437
Risposte 437

21. Argomenti avanzati sui moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Nomi nascosti nei moduli 438
Minimizzare i pericoli di from * : _X e _ _all_ _ 439
Abilitare funzionalità future del linguaggio 439
Uso misto dei moduli: _ _name_ _ e _ _main_ _ 440
Unit Test tramite l’attributo _ _name_ _ 441
Modifiche del percorso di ricerca dei moduli 442
L’estensione import as 443
Sintassi di importazione relativa 444
Perché le importazioni relative? 445
La progettazione dei moduli 447
I moduli sono oggetti: metaprogrammi 448
Trappole d’uso relative ai moduli 450
Nel codice al livello più alto, l’ordine delle istruzioni conta 450
Importazione di moduli tramite nomi in formato stringa 451
from copia i nomi, ma non le referenze 452
from * può nascondere il significato delle variabili 453
reload non ha effetto sulle importazioni effettuate con from 453
reload, from e test interattivo del codice 454
reload non viene applicato transitivamente 455
Le importazioni circolari tramite from potrebbero non funzionare 456
Riassunto 457
Domande 458
Risposte 458
Esercizi relativi alla parte V 459

Parte VI. Classi e programmazione orientata agli oggetti

22. Programmazione orientata agli oggetti: il quadro generale . . . . . . . 463
Perché usare le classi? 464
OOP: il quadro generale 465
Ricerca degli Attributi ereditati 465
Classi e istanze 468
Chiamate ai metodi delle classi 469
La codifica degli alberi di classi 469
L’OOP permette il riutilizzo del codice 472
Riassunto 475
Domande 476
Risposte 476

23. Codifica delle classi: le basi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Le classi generano più oggetti istanza 478
L’oggetto classe fornisce il comportamento di default 479
Gli oggetti istanza sono elementi concreti 479
Un primo esempio 480
Le classi vengono specializzate per ereditarietà 482
Un secondo esempio 483
Le classi sono attributi dei moduli 484
Le classi possono intercettare gli operatori Python 486
Un terzo esempio 487
Perché usare l’overloading degli operatori? 489
La più semplice classe del mondo 489
Riassunto 492
Domande 493
Risposte 493

24. Codifica delle classi: i dettagli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
L’istruzione class 495
Forma generale 495
Esempio 496
Metodi 498
Esempio 499
Chiamate ai costruttori delle sovraclassi 500
Altri schemi di chiamata dei metodi 500
Ereditarietà 501
Costruzione dell’albero degli attributi 501
Specializzazione dei metodi ereditati 502
Tecniche d’interfacciamento tra classi 503
Sovraclassi astratte 505
Overloading degli operatori 505
Metodi d’overloading di uso comune 506
_ _getitem_ _ intercetta le indicizzazioni 507
_ _getitem_ _ e _ _iter_ _ implementano il protocollo d’iterazione 508
Iteratori definiti dall’utente 509
Iteratori multipli su uno stesso oggetto 511
_ _getattr_ _ e _ _setattr_ _ intercettano le referenze agli attributi 513
Emulare attributi d’istanza privati 515
_ _repr_ _ e _ _str_ _ danno la rappresentazione testuale degli oggetti 516
_ _radd_ _ gestisce l’addizione destra 517
_ _call_ _ intercetta le chiamate 518
Interfacce in stile funzione e codice basato su callback 519
_ _del_ _ è un distruttore 520
Spazi di nomi: tutti i dettagli 521
Nomi semplici: locali se non dichiarati globali 522
Nomi di attributi: spazi di nomi degli oggetti 522
Lo “Zen” degli spazi di nomi Python: gli assegnamenti classificano i nomi522
I dizionari degli spazi di nomi 524
Sommario | xix
Collegamenti tra spazi di nomi 527
Un esempio più realistico 528
Riassunto 531
Domande 532
Risposte 532

25. Progettare con le classi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Python e l’OOP 534
Overloading tramite segnatura delle chiamate (o no) 535
Classi come record 535
L’OOP e l’ereditarietà: relazioni “è un” 537
L’OOP e la composizione: relazioni “ha un” 539
Rivisitazione dei flussi di dati 541
L’OOP e la delegazione 543
Ereditarietà multipla 545
Le classi sono oggetti: costruttori generici 548
Perché i costruttori? 549
I metodo sono oggetti: metodi legati e non legati 550
Stringhe di documentazione 552
Classi e moduli 553
Riassunto 554
Domande 555
Risposte 555

26. Argomenti avanzati sulle classi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Estendere i tipi precostituiti 556
Estendere i tipi precostituiti tramite inclusione 557
Estendere i tipi precostituiti tramite sottoclassi 557
Attributi pseudoprivati delle classi 560
L’espansione dei nomi: panoramica 560
Perché usare attributi pseudo privati? 561
Classi di nuovo stile 563
Modifiche all’ereditarietà a diamante 564
Esempio di ereditarietà a diamante 564
Risoluzione esplicita dei nomi 565
Altre estensioni per le classi di nuovo stile 566
Metodi statici e di classe 567
Attributi slot 567
Proprietà delle classi 568
Il nuovo metodo d’overloading _ _getattribute_ _ 570
Metodi statici e di classe 570
Uso dei metodi statici e di classe 572
Decoratori di funzione 574
Un esempio di decoratore 575
Trappole di programmazione sulle classi 576
xx | Sommario
La modifica degli attributi delle classi può avere effetti secondari 577
Ereditarietà multipla: l’ordine è significativo 578
Metodi, classi e scopi annidati 580
Annidare troppo 581
Riassunto 582
Domande 583
Risposte 583
Esercizi relativi alla Parte VI 584

Parte VII. Eccezioni

27. Le basi delle eccezioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Perché utilizzare le eccezioni? 594
I ruoli delle eccezioni 594
Gestione delle eccezioni in breve 595
Le istruzioni try/except/else 599
Le proposizioni dell’istruzione try 601
La proposizione try/else 603
Esempio: messaggi di default 604
Esempio: intrappolare le eccezioni precostituite 605
L’istruzione try/finally 606
Esempio: azioni terminali con try/finally 607
try/except/finally unificate 608
Combinare finally e except tramite annidamento 609
Esempio di try unificata 609
L’istruzione raise 611
Esempio: eccezioni generate manualmente e loro gestione 612
Esempio: passare dati aggiuntivi con raise 612
Esempio: propagazione delle eccezioni con raise 613
L’istruzione assert 613
Esempio: intrappolare vincoli (ma non errori) 614
with/as e i gestori di contesto 615
Uso di base 615
Il protocollo di gestione dei contesti 616
Riassunto 619
Domande 620
Risposte 620

28. Le eccezioni come oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Eccezioni basate sulle stringhe 622
Le eccezioni si tipo stringa saranno presto eliminate! 622
Eccezioni basate su classi 623
Eccezioni basare su classi: un esempio 623
Perché usare le eccezioni basate su classi? 625
Sommario | xxi
Le eccezioni precostituite 628
Specificare il testo delle eccezioni 629
Inviare dati e comportamenti insieme alle istanze 630
Esempio: dati aggiuntivi con classi e stringhe 631
Forma generale dell’istruzione raise 633
Riassunto 634
Domande 635
Risposte 635

29. Uso delle eccezioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Annidare i gestori di eccezioni 636
Esempio: flussi di controllo annidati 638
Esempio: annidamento sintattico 638
Idiomi d’uso comune 640
Le eccezioni non sono necessariamente errori 640
raise per segnalare condizioni nelle funzioni 641
Debugging tramite try esterne 642
Eseguire test dall’interno del processo 642
sys.exc_info 643
Consigli di progettazione 644
Cosa racchiudere 644
Intrappolare troppo: evitate try vuote 644
Intrappolare troppo poco: usate categorie basate su classi 646
Trappole d’uso delle eccezioni 647
Le eccezioni stringa vengono accoppiate per identità, non per valore 647
Intrappolare la cosa sbagliata 649
Riassunto del linguaggio base 649
Gli strumenti di Python 649
Strumenti di sviluppo per progetti complessi 650
Riassunto 653
Domande 655
Risposte 655
Esercizi relativi alla Parte VII 656

Parte VIII. Appendici

A. Installazione e configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
B. Soluzioni degli esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

Indice analitico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703


  Login 

  Non ricordo la password
  Nuovo account
  Cliente 

  Il carrello

 Carrello 

  Informazioni 

  Contatti
  Qualità del servizio
  Costi e tempi di consegna
  Modalità di pagamento
  Prezzi
  Sconti
  Privacy