-
Notifications
You must be signed in to change notification settings - Fork 0
/
novità.html
50 lines (38 loc) · 7.42 KB
/
novità.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html>
<meta charset=utf-8>
<title>Cosa c’è di nuovo in Immersione in Python 3</title>
<!--[if IE]><script src=j/html5.js></script><![endif]-->
<link rel=stylesheet href=dip3.css>
<style>
body{counter-reset:h1 -1}
h2:before{content:''}
</style>
<link rel=stylesheet media='only screen and (max-device-width: 480px)' href=mobile.css>
<link rel=stylesheet media=print href=print.css>
<meta name=viewport content='initial-scale=1.0'>
<form action=http://www.google.com/cse><div><input type=hidden name=cx value=014021643941856155761:l5eihuescdw><input type=hidden name=ie value=UTF-8> <input type=search name=q size=25 placeholder="powered by Google™"> <input type=submit name=sa value=Search></div></form>
<p>Voi siete qui: <a href=index.html>Inizio</a> <span class=u>‣</span> <a href=indice.html#novità>Immersione in Python 3</a> <span class=u>‣</span>
<h1>Cosa c’è di nuovo in “Immersione in Python 3”</h1>
<blockquote class=q>
<p><span class=u>❝</span> Non è da qui che siamo entrati? <span class=u>❞</span><br>— Pink Floyd, The Wall
</blockquote>
<p id=toc>
<h2 id=divingin><i>alias</i> “il livello meno”</h2>
<p class=f>Avete già familiarità con la programmazione in Python? Avete letto l’originale “<a href=http://it.diveintopython.org/>Immersione in Python</a>”? Magari avete perfino comprato <a href=http://diveintopython.org>il libro in inglese</a>? (Se è così, grazie!) Siete pronti a saltare il fosso e imparare Python 3? … Se tutto questo è vero, continuate a leggere. (Se niente di tutto questo è vero, vi converrebbe <a href=installare-python.html>cominciare dall’inizio</a>.)
<p>Python 3 include uno script chiamato <code>2to3</code>. Imparate come funziona. Amatelo. Usatelo. <a href=convertire-codice-verso-python-3-con-2to3.html>Convertire codice verso Python 3 con <code>2to3</code></a> è una guida di riferimento a tutte le cose che lo strumento <code>2to3</code> è in grado di correggere automaticamente. Dato che molte di quelle correzioni sono modifiche alla sintassi, la guida è un buon punto di partenza per imparare molti dei cambiamenti sintattici di Python 3. (Ora <code>print</code> è una funzione, <code>`x`</code> non funziona, <i class=baa>&</i>c.)
<p><a href=caso-di-studio-convertire-chardet-verso-python-3.html>Caso di studio: convertire <code>chardet</code> verso Python 3</a> documenta il mio tentativo (infine coronato dal successo) di convertire una libreria non banale da Python 2 verso Python 3. Potrebbe esservi d’aiuto; potrebbe non esserlo. Il capitolo ha una curva di apprendimento abbastanza ripida, dato che dovete prima capire più o meno come funziona la libreria in modo da poter poi capire i problemi che sono comparsi e come risolverli. Molti malfunzionamenti coinvolgono le stringhe. Parlando delle quali…
<p>Stringhe. Whew. Da dove cominciare. Python 2 aveva “stringhe” e “stringhe Unicode”. Python 3 ha “byte” e “stringhe”. Cioè, tutte le stringhe ora sono stringhe Unicode, e se volete lavorare con un insieme di byte dovete usare il nuovo tipo <code>bytes</code>. Python 3 non effettuerà <em>mai</em> una conversione implicita tra stringhe e byte, quindi se non siete sempre sicuri di cosa state usando i vostri programmi si bloccheranno quasi sicuramente. Leggete <a href=stringhe.html>il capitolo sulle stringhe</a> per maggiori dettagli.
<p>Il confronto tra byte e stringhe si ripresenta più volte nel corso del libro.
<ul>
<li>Nel capitolo <a href=file.html>File</a> imparerete la differenza tra leggere file in modalità “binaria” e in modalità “testo”. Leggere (e scrivere!) file in modalità testo richiede un parametro <code>encoding</code>. Alcuni metodi dei file di testo contano i caratteri, ma altri metodi contano i byte. Se il vostro programma presume che un carattere sia uguale a un byte, si <em>bloccherà</em> sui caratteri multibyte.
<li>Nel capitolo <a href=servizi-web-http.html>Servizi web <abbr>HTTP</abbr></a> il modulo <code>httplib2</code> preleva intestazioni e dati via <abbr>HTTP</abbr>. Le intestazioni <abbr>HTTP</abbr> vengono restituite come stringhe, ma il corpo di una risposta <abbr>HTTP</abbr> viene restituito sotto forma di byte.
<li>Nel capitolo <a href=serializzare-oggetti-python.html>Serializzare oggetti Python</a> imparerete perché il modulo <code>pickle</code> in Python 3 definisce un nuovo formato di dati che non è compatibile all’indietro con Python 2. (Suggerimento: è a causa di byte e stringhe.) Inoltre, Python 3 supporta la serializzazione da e verso il formato <abbr>JSON</abbr>, che nemmeno possiede un tipo di dato <code>bytes</code>. Vi mostrerò come aggirare questa limitazione.
<li>Il capitolo <a href=caso-di-studio-convertire-chardet-verso-python-3.html>Caso di studio: convertire <code>chardet</code> verso Python 3</a> è un macello totale di byte e stringhe.
</ul>
<p>Anche se non siete interessati a Unicode (oh, ma lo sarete), vorrete sapere come <a href=stringhe.html#formatting-strings>formattare le stringhe in Python 3</a>, che è un’operazione completamente diversa rispetto a Python 2.
<p>Gli iteratori sono ovunque in Python 3, e li capisco molto meglio rispetto a quando ho scritto “Immersione in Python” cinque anni fa. Anche voi avete bisogno di capirli, perché molte funzioni che erano solite restituire liste in Python 2 ora restituiranno iteratori in Python 3. Come minimo, dovreste leggere <a href=iteratori.html#a-fibonacci-iterator>la seconda metà del capitolo sugli iteratori</a> e <a href=uso-avanzato-degli-iteratori.html#generator-expressions>la seconda metà del capitolo sull’uso avanzato degli iteratori</a>.
<p>A grande richiesta ho aggiunto un’appendice sui <a href=nomi-dei-metodi-speciali.html>nomi dei metodi speciali</a>, che è più o meno simile al <a href=http://www.python.org/doc/3.1/reference/datamodel.html#special-method-names>capitolo intitolato “Modello dei dati” nella documentazione di Python</a> ma è condita da osservazioni ironiche e pungenti.
<p>Al tempo in cui stavo scrivendo “Immersione in Python”, tutte le librerie XML disponibili facevano schifo. Poi Fredrik Lundh ha implementato <a href=http://effbot.org/zone/element-index.htm>ElementTree</a>, che non fa per niente schifo. Gli dèi di Python hanno saggiamente <a href=http://docs.python.org/3.1/library/xml.etree.elementtree.html>incorporato ElementTree nella libreria standard</a> e ora ElementTree forma le basi per il <a href=xml.html>mio nuovo capitolo su XML</a>. Le vecchie librerie per il riconscimento di XML sono ancora in giro, ma dovreste evitarle, perché fanno schifo!
<p>Un’altra novità di Python — non nel linguaggio ma nella comunità — è la comparsa di archivi di codice come il <a href=http://pypi.python.org/>Python Package Index</a> (PyPI, Indice dei Pacchetti Python). Python viene distribuito con alcuni strumenti utili per impacchettare il vostro codice in formati standard e distribuire quei pacchetti su PyPI. Leggete il capitolo <a href=distribuire-librerie-python.html>Distribuire librerie Python</a> per conoscere i dettagli.
<p class=c>© 2001–10 <a href=informazioni-sul-libro.html>Mark Pilgrim</a><br>
© 2009–10 <a href=informazioni-sulla-traduzione.html>Giulio Piancastelli</a> per la traduzione italiana