This commit is contained in:
Mark Pilgrim
2009-08-05 14:49:32 -07:00
parent 202511e983
commit fb0aa874df
17 changed files with 231 additions and 197 deletions
+35 -35
View File
@@ -246,7 +246,7 @@ td pre{padding:0;border:0}
<td><code class=pp>import <dfn>cookielib</dfn></code>
<td><code class=pp>import http.cookiejar</code>
<tr><th>&#x2463;
<td><pre><code class=pp>import <dfn>BaseHTTPServer</dfn>
<td><pre class=pp><code>import <dfn>BaseHTTPServer</dfn>
import <dfn>SimpleHTTPServer</dfn>
import <dfn>CGIHttpServer</dfn></code></pre>
<td><code class=pp>import http.server</code>
@@ -280,14 +280,14 @@ import <dfn>CGIHttpServer</dfn></code></pre>
<td><code class=pp>import <dfn>robotparser</dfn></code>
<td><code class=pp>import urllib.robotparser</code>
<tr><th>&#x2464;
<td><pre><code class=pp>from urllib import <dfn>FancyURLopener</dfn>
<td><pre class=pp><code>from urllib import <dfn>FancyURLopener</dfn>
from urllib import urlencode</code></pre>
<td><pre><code class=pp>from urllib.request import FancyURLopener
<td><pre class=pp><code>from urllib.request import FancyURLopener
from urllib.parse import urlencode</code></pre>
<tr><th>&#x2465;
<td><pre><code class=pp>from urllib2 import <dfn>Request</dfn>
<td><pre class=pp><code>from urllib2 import <dfn>Request</dfn>
from urllib2 import <dfn>HTTPError</dfn></code></pre>
<td><pre><code class=pp>from urllib.request import Request
<td><pre class=pp><code>from urllib.request import Request
from urllib.error import HTTPError</code></pre>
</table>
@@ -307,9 +307,9 @@ from urllib.error import HTTPError</code></pre>
<th>Python 2
<th>Python 3
<tr><th>
<td><pre><code class=pp>import urllib
<td><pre class=pp><code>import urllib
print urllib.urlopen('http://diveintopython3.org/').read()</code></pre>
<td><pre><code class=pp>import urllib.request, urllib.parse, urllib.error
<td><pre class=pp><code>import urllib.request, urllib.parse, urllib.error
print(urllib.request.urlopen('http://diveintopython3.org/').read())</code></pre>
</table>
@@ -334,7 +334,7 @@ print(urllib.request.urlopen('http://diveintopython3.org/').read())</code></pre>
<td><code class=pp>import <dfn>dumbdbm</dfn></code>
<td><code class=pp>import dbm.dumb</code>
<tr><th>
<td><pre><code class=pp>import <dfn>anydbm</dfn>
<td><pre class=pp><code>import <dfn>anydbm</dfn>
import whichdb</code></pre>
<td><code class=pp>import dbm</code>
</table>
@@ -351,7 +351,7 @@ import whichdb</code></pre>
<td><code class=pp>import <dfn>xmlrpclib</dfn></code>
<td><code class=pp>import xmlrpc.client</code>
<tr><th>
<td><pre><code class=pp>import <dfn>DocXMLRPCServer</dfn>
<td><pre class=pp><code>import <dfn>DocXMLRPCServer</dfn>
import <dfn>SimpleXMLRPCServer</dfn></code></pre>
<td><code class=pp>import xmlrpc.server</code>
</table>
@@ -363,13 +363,13 @@ import <dfn>SimpleXMLRPCServer</dfn></code></pre>
<th>Python 2
<th>Python 3
<tr><th>&#x2460;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import <dfn>cStringIO</dfn> as <dfn>StringIO</dfn>
except ImportError:
import StringIO</code></pre>
<td><code class=pp>import io</code>
<tr><th>&#x2461;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import cPickle as pickle
except ImportError:
import pickle</code></pre>
@@ -456,22 +456,22 @@ except ImportError:
<td><code class=pp>a_function_that_returns_an_iterator().next()</code>
<td><code class=pp>next(a_function_that_returns_an_iterator())</code>
<tr><th>&#x2462;
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def next(self):
pass</code></pre>
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def __next__(self):
pass</code></pre>
<tr><th>&#x2463;
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def next(self, x, y):
pass</code></pre>
<td><i>no change</i>
<tr><th>&#x2464;
<td><pre><code class=pp>next = 42
<td><pre class=pp><code>next = 42
for an_iterator in a_sequence_of_iterators:
an_iterator.next()</code></pre>
<td><pre><code class=pp>next = 42
<td><pre class=pp><code>next = 42
for an_iterator in a_sequence_of_iterators:
an_iterator.__next__()</code></pre>
</table>
@@ -560,7 +560,7 @@ for an_iterator in a_sequence_of_iterators:
<th>Python 3
<tr><th>
<td><code class=pp>reduce(a, b, c)</code>
<td><pre><code class=pp>from functools import reduce
<td><pre class=pp><code>from functools import reduce
reduce(a, b, c)</code></pre>
</table>
@@ -674,31 +674,31 @@ reduce(a, b, c)</code></pre>
<th>Python 2
<th>Python 3
<tr><th>&#x2460;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
<dfn>except</dfn> ImportError, e
pass</code></pre>
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
except ImportError as e:
pass</code></pre>
<tr><th>&#x2461;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
except (RuntimeError, ImportError), e
pass</code></pre>
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
except (RuntimeError, ImportError) as e:
pass</code></pre>
<tr><th>&#x2462;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
except ImportError:
pass</code></pre>
<td><i>no change</i>
<tr><th>&#x2463;
<td><pre><code class=pp>try:
<td><pre class=pp><code>try:
import mymodule
except:
pass</code></pre>
@@ -951,14 +951,14 @@ except:
<th>Python 2
<th>Python 3
<tr><th>&#x2460;
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def <dfn>__nonzero__</dfn>(self):
pass</code></pre>
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def <dfn>__bool__</dfn>(self):
pass</code></pre>
<tr><th>&#x2461;
<td><pre><code class=pp>class A:
<td><pre class=pp><code>class A:
def __nonzero__(self, x, y):
pass</code></pre>
<td><i>no change</i>
@@ -1233,18 +1233,18 @@ except:
<th>Python 2
<th>Python 3
<tr><th>&#x2460;
<td><pre><code class=pp>class C(metaclass=PapayaMeta):
<td><pre class=pp><code>class C(metaclass=PapayaMeta):
pass</code></pre>
<td><i>unchanged</i>
<tr><th>&#x2461;
<td><pre><code class=pp>class Whip:
<td><pre class=pp><code>class Whip:
__metaclass__ = PapayaMeta</code></pre>
<td><pre><code class=pp>class Whip(metaclass=PapayaMeta):
<td><pre class=pp><code>class Whip(metaclass=PapayaMeta):
pass</code></pre>
<tr><th>&#x2462;
<td><pre><code class=pp>class C(Whipper, Beater):
<td><pre class=pp><code>class C(Whipper, Beater):
__metaclass__ = PapayaMeta</code></pre>
<td><pre><code class=pp>class C(Whipper, Beater, metaclass=PapayaMeta):
<td><pre class=pp><code>class C(Whipper, Beater, metaclass=PapayaMeta):
pass</code></pre>
</table>
@@ -1335,9 +1335,9 @@ except:
<th>After
<tr><th>
<td><pre><code class=pp>while 1:
<td><pre class=pp><code>while 1:
do_stuff()</code></pre>
<td><pre><code class=pp>while True:
<td><pre class=pp><code>while True:
do_stuff()</code></pre>
<tr><th>
<td><code class=pp>type(x) == T</code>
@@ -1346,10 +1346,10 @@ except:
<td><code class=pp>type(x) is T</code>
<td><code class=pp>isinstance(x, T)</code>
<tr><th>
<td><pre><code class=pp>a_list = list(a_sequence)
<td><pre class=pp><code>a_list = list(a_sequence)
a_list.sort()
do_stuff(a_list)</code></pre>
<td><pre><code class=pp>a_list = sorted(a_sequence)
<td><pre class=pp><code>a_list = sorted(a_sequence)
do_stuff(a_list)</code></pre>
</table>