2010.Dive Into Python 3, r916.pdf

(2542 KB) Pobierz
Dive Into Python 3
C HAPTER -1. W HAT S N EW I N “D IVE I NTO P YTHON
3”
Isn’t this where we came in?
— Pink Floyd, The Wall
-1.1. A . K . A . THE MINUS LEVEL
A re you already a Python programmer? Did you read the original “ Dive Into Python ? Did you buy it
on paper? (If so, thanks!) Are you ready to take the plunge into Python 3? … If so, read on. (If none of that
is true, you’d be better off starting at the beginnin g. )
Python 3 comes with a script called 2to3 . Learn it. Love it. Use it. Porting Code to Python 3 with 2to3 is a
reference of all the things that the 2to3 tool can fix automatically. Since a lot of those things are syntax
changes, it’s a good starting point to learn about a lot of the syntax changes in Python 3. ( print is now a
function, `x` doesn’t work, & c.)
Case Study: Porting chardet to Python 3 documents my (ultimately successful) effort to port a non-trivial
library from Python 2 to Python 3. It may help you; it may not. There’s a fairly steep learning curve, since
you need to kind of understand the library first, so you can understand why it broke and how I fixed it. A
lot of the breakage centers around strings. Speaking of which…
Strings. Whew. Where to start. Python 2 had “strings” and “Unicode strings.” Python 3 has “bytes” and
“strings.” That is, all strings are now Unicode strings, and if you want to deal with a bag of bytes, you use
the new bytes type. Python 3 will never implicitly convert between strings and bytes, so if you’re not sure
which one you have at any given moment, your code will almost certainly break. Read the Strings chapter
for more details.
Bytes vs. strings comes up again and again throughout the book.
1
541006116.006.png 541006116.007.png 541006116.008.png
• In File s, you’ll learn the difference between reading files in “binary” and “text” mode. Reading (and writing!)
files in text mode requires an encoding parameter. Some text file methods count characters, but other
methods count bytes. If your code assumes that one character == one byte, it will break on multi-byte
characters.
• In HTTP Web Service s, the httplib2 module fetches headers and data over HTTP . HTTP headers are
returned as strings, but the HTTP body is returned as bytes.
• In Serializing Python Object s, you’ll learn why the pickle module in Python 3 defines a new data format that
is backwardly incompatible with Python 2. (Hint: it’s because of bytes and strings.) Also, Python 3 supports
serializing objects to and from JSON , which doesn’t even have a bytes type. I’ll show you how to hack
around that.
• In Case study: porting chardet to Python 3 , it’s just a bloody mess of bytes and strings everywhere.
Even if you don’t care about Unicode (oh but you will), you’ll want to read about string formatting in Python
3 , which is completely different from Python 2.
Iterators are everywhere in Python 3, and I understand them a lot better than I did five years ago when I
wrote “Dive Into Python”. You need to understand them too, because lots of functions that used to return
lists in Python 2 will now return iterators in Python 3. At a minimum, you should read the second half of
By popular request, I’ve added an appendix on Special Method Name s , which is kind of like the Python docs
“Data Model” chapter but with more snark.
When I was writing “Dive Into Python”, all of the available XML libraries sucked. Then Fredrik Lundh wrote
ElementTre e, which doesn’t suck at all. The Python gods wisely incorporated ElementTree into the standard
library , and now it forms the basis for my new XML chapter . The old ways of parsing XML are still around,
but you should avoid them, because they suck!
Also new in Python — not in the language but in the community — is the emergence of code repositories
like The Python Package Index (PyPI). Python comes with utilities to package your code in standard formats
and distribute those packages on PyPI. Read Packaging Python Librarie s for details.
2
541006116.009.png
C HAPTER 0. I NSTALLING P YTHON
Tempora mutantur nos et mutamur in illis. (Times change, and we change with them.)
— ancient Roman proverb
0.1. D IVING I N
B efore you can start programming in Python 3, you need to install it. Or do you?
0.2. W HICH P YTHON I S R IGHT F OR Y OU ?
If you're using an account on a hosted server, your ISP may have already installed Python 3. If you’re running
Linux at home, you may already have Python 3, too. Most popular GNU/Linux distributions come with
Python 2 in the default installation; a small but growing number of distributions also include Python 3. Mac
OS X includes a command-line version of Python 2, but as of this writing it does not include Python 3.
Microsoft Windows does not come with any version of Python. But don’t despair! You can point-and-click
your way through installing Python, regardless of what operating system you have.
The easiest way to check for Python 3 on your Linux or Mac OS X system is from the command line . Once
you’re at a command line prompt, just type python3 (all lowercase, no spaces), press ENTER , and see what
happens. On my home Linux system, Python 3.1 is already installed, and this command gets me into the
Python interactive shell .
mark@atlantis:~$ python3
Python 3.1 (r31:73572, Jul 28 2009, 06:52:23)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
(Type exit() and press ENTER to exit the Python interactive shell.)
3
541006116.001.png
My web hosting provider also runs Linux and provides command-line access, but my server does not have
Python 3 installed. (Boo!)
mark@manganese:~$ python3
bash: python3: command not found
So back to the question that started this section, “Which Python is right for you?” Whichever one runs on
the computer you already have.
[Read on for Windows instructions, or skip to Installing on Mac OS X , Installing on Ubuntu Linux , or
0.3. I NSTALLING ON M ICROSOFT W INDOWS
Windows comes in two architectures these days: 32-bit and 64-bit. Of course, there are lots of different
versions of Windows — XP, Vista, Windows 7 — but Python runs on all of them. The more important
distinction is 32-bit v. 64-bit. If you have no idea what architecture you’re running, it’s probably 32-bit.
Visit python.org/download/ and download the appropriate Python 3 Windows installer for your
architecture. Your choices will look something like this:
Python 3.1 Windows installer (Windows binary — does not include source)
Python 3.1 Windows AMD64 installer (Windows AMD64 binary — does not include source)
I don’t want to include direct download links here, because minor updates of Python happen all the time and
I don’t want to be responsible for you missing important updates. You should always install the most recent
version of Python 3.x unless you have some esoteric reason not to.
4
541006116.002.png
 
Once your download is complete, double-
click the .msi file. Windows will pop up a
security alert, since you’re about to be
running executable code. The official Python
installer is digitally signed by the Python
Software Foundation , the non-profit
corporation that oversees Python
development. Don’t accept imitations!
Click the Run button to launch the Python
3 installer.
The first question the installer
will ask you is whether you
want to install Python 3 for all
users or just for you. The
default choice is “install for all
users,” which is the best
choice unless you have a good
reason to choose otherwise.
(One possible reason why you
would want to “install just for
me” is that you are installing
Python on your company’s
computer and you don’t have
administrative rights on your
Windows account. But then,
why are you installing Python
without permission from your company’s Windows administrator? Don’t get me in trouble here!)
Click the Next button to accept your choice of installation type.
5
541006116.003.png 541006116.004.png 541006116.005.png
Zgłoś jeśli naruszono regulamin