This repository has been archived by the owner on Dec 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 12
/
whats-new.html
49 lines (37 loc) · 6.57 KB
/
whats-new.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
<!DOCTYPE html>
<meta charset=utf-8>
<title>《深入 Python 3》中有何新内容</title>
<!--[if IE]><script src=j/html5.js></script><![endif]-->
<link rel=stylesheet href="dip3.css">
<style>
body{counter-reset:h1 -1}
h3:before{content:''}
</style>
<link rel=stylesheet media='only screen and (max-device-width: 480px)' href="http://woodpecker.org.cn/diveintopython3/mobile.css">
<link rel=stylesheet media=print href="http://woodpecker.org.cn/diveintopython3/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>您在这里:<a href="index.html">首页</a> <span class=u>‣</span> <a href="table-of-contents.html#whats-new">深入 Python 3</a> <span class=u>‣</span>
<h1>《深入 Python 3》中有何新内容</h1>
<blockquote class=q>
<p><span class=u>❝</span> 这不正是我们进来的地方吗? <span class=u>❞</span><br>— 《迷墙》
</blockquote>
<p id=toc>
<h2 id=divingin><i>又叫做</i> “the minus level”</h2>
<p class=f>你读过原版的 “<a href=http://diveintopython.org/>深入 Python</a>” 并可能甚至买了纸版的。(谢谢!)你差不多已经了解 Python 2 了。你准备好了投入到 Python 3 里面。… 如果所有这些都成立,继续读。(如果没有一个是成立的,你最好<a href="installing-python.html">从头开始</a>。)
<p>Python 3 提供了一个脚本叫做 <code>2to3</code>。学习它。喜欢它。使用它。<a href="porting-code-to-python-3-with-2to3.html">用 <code>2to3</code> 移植代码到 Python 3</a> 是一个有关 <code>2to3</code> 工具能够自动整理的所有东西的参考手册。很多这些东西都是语法的变更,因此了解 Python 3 里面许多的语法变更是一个好的起点。(<code>print</code> 现在是一个函数,<code>`x`</code> 不能使用,等等。)
<p><a href="case-study-porting-chardet-to-python-3.html">案例分析:移植 <code>chardet</code> 到 Python 3</a> 记录了我努力(最终成功)把一个不平常的库从 Python 2 移植到 Python 3 的过程。它也许能帮助你;也许不能。这里存在一个相当陡的学习曲线,由于你首先需要稍微理解一下这个库,那样你才可以理解为什么它会损坏以及我如何修复它的。围绕字符串有很多损坏的地方。说到这个…
<p>字符串。吆。从哪儿开始呢。Python 2 有 “strings” 和 “Unicode strings”。Python 3 有 “bytes” 和 “strings”。也就是说,现在所有字符串都是 Unicode 的字符串,那么如果你想处理一个字节包,你可以使用新的 <code>bytes</code> 类型。Python 3 <em>从不会</em>在 strings 和 bytes 之间进行隐式的转换,因此在任何时候如果你不确信你拥有的是什么类型,你的代码几乎无疑的将会出问题。阅读 <a href="strings.html">Strings 的章节</a> 了解更多细节信息。
<p>贯穿整个这本书,Bytes 和 strings 的对比会一次又一次的出现。
<ul>
<li>在<a href="files.html">文件</a>这章,你将了解到通过“二进制”模式和“文本”模式读取文件的区别;在文本模式下读取(和写入!)文件需要提供一个 <code>encoding</code> 参数。一些文本文件方法按照字符来计数,而另一些方法按照字节计数。如果你的代码采取一个字符等于一个字节的方式,那么在多字节表示一个字符的情况下<em>将会</em>出问题。
<li>在 <a href="http-web-services.html"><abbr>HTTP</abbr> Web 服务</a>这章,<code>httplib2</code> 模块通过 <abbr>HTTP</abbr> 获取头信息和数据。<abbr>HTTP</abbr> 头信息返回的是字符串,而 <abbr>HTTP</abbr> 正文则返回的是字节。
<li>在<a href="serializing.html">序列化 Python 对象</a>这章,你将了解到为什么 Python 3 里面的 <code>pickle</code> 模块定义了一个和 Python 2 向后不兼容的新的数据类型。(提示:这就是因为字节和字符串的原因。) 同样 <abbr>JSON</abbr> 也根本不支持字节类型。我将向你展示如何解决这个问题。
<li>在<a href="case-study-porting-chardet-to-python-3.html">案例分析:移植 <code>chardet</code> 到 Python 3</a>这章,到处都是一大堆一大堆关于字节和字符串的东西。
</ul>
<p>即使你不关心 Unicode (但实际上你会的),你也会想阅读一下 <a href="strings.html#formatting-strings">Python 3 里面的字符串格式</a>,这和 Python 2 里面的完全不一样。
<p>迭代在 Python 3 里面无处不在,比起五年之前我写“深入Python” 的时候,我现在能更好的理解它们。你也需要理解他们,因为过去经常在 Python 2 里面返回列表的很多函数,在 Python 3 里面将返回迭代。至少,你应该阅读一下<a href="iterators.html#a-fibonacci-iterator">迭代章节的下半部分</a>和<a href="advanced-iterators.html#generator-expressions">高级迭代章节的下半部分</a>。
<p>根据大家的要求,我已经添加了一个关于<a href="special-method-names.html">特殊方法名称</a>的附录,有点像<a href=http://www.python.org/doc/3.1/reference/datamodel.html#special-method-names> Python 文档的 “数据模型”章节</a>但是包含更多的内容。
<p>当我在撰写“深入 Python”的时候,所有可用的 XML 库都很糟糕。接着 Fredrik Lundh 编写了非常优秀的 <a href=http://effbot.org/zone/element-index.htm>ElementTree</a>。Python 的专家们聪明的把 <a href=http://docs.python.org/3.1/library/xml.etree.elementtree.html>ElementTree 变成了标准库的一部分</a>,然后现在它构成了<a href="xml.html">我的新的 XML 章节</a>的基础。解析 XML 的那些老的方式仍然可用,但是你应该避免使用它们,因为他们很糟糕!
<p>除此之外,还有个关于 Python 的新东西 — 不是语言上的,而是社区中的 — 像 <a href=http://pypi.python.org/>Python 包装索引</a>(PyPI)的出现。Python 提供了实用工具类用来将你的代码打包成标准格式,并分发那些包到 PyPI 中。阅读 <a href="packaging.html">打包 Python 库</a>了解详细信息。
<p class=c>© 2001–9 <a href="about.html">Mark Pilgrim</a>