/whats-new.html
HTML | 51 lines | 37 code | 14 blank | 0 comment | 0 complexity | 03f5d0cfedfe36619f577de4093d2a10 MD5 | raw file
- <!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=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=搜索></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> Isn’t this where we came in?<span class=u>❞</span><br>— Pink Floyd, The Wall
- </blockquote>
- <p id=toc>
- <h2 id=divingin><i>又名</i> “负号层”</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> 不再有效,<i class=baa></i>诸如此类。)
-
- <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 字符串,那么如果要处理一堆字节,应当使用新的 bytes 类型。Python 3 <em>绝</em>不会在 strings 和 bytes 之间进行隐式转换,因此无论何时如果无法确定该使用哪种类型,你所写代码将毋庸置疑地出现问题。请阅读 <a href=strings.html>《字符串》</a> 一章了解更多细节。
-
- <p>整本书中,Bytes 与 strings 的对比将会一次又一次的反复出现。
-
- <ul>
- <li>在<a href=files.html>《文件》</a>这一章中,你将了解到以“二进制”模式和“文本”模式读取文件的区别。以文本模式读取(以及写入!)文件需要提供 <code>encoding</code> 参数。文本文件的某些方法按字符计数,但另一些方法却按照字节计数。如果代码中假定一个字符等于一个字节,在处理多字节字符时 <em>必将</em> 导致问题出现。
- </li><li>在 <a href=http-web-services.html>《<abbr>HTTP</abbr> Web Services》</a> 这一章中,<code>httplib2</code> 模块通过 <abbr>HTTP</abbr> 获取 header 和数据。<abbr>http</abbr> header 以字符串形式返回,而 <abbr>http</abbr> body 则以字节方式返回。
- </li><li>在<a href=serializing.html>《序列化 Python 对象》</a>这一章中,你将了解到 Python 3 的 pickle 模块为何要定义了一个与 Python 2 不向后兼容的新数据类型。(提示:正是因为字节和字符串。) 与此同时,<abbr>json</abbr> 也根本不支持 <code>bytes</code> 类型。而我将展示解决这一难题的方法。
- </li><li>在 <a href=case-study-porting-chardet-to-python-3.html>《案例分析:移植 <code>chardet</code> 到 Python 3》</a>这章中,到处充斥着大段的关于 bytes 和 strings 的讨论。
- </li></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>(Python Package Index,PyPI) 这样的代码仓库。Python 提供了一些实用工具,可用于将代码打包成标准格式并分发到 PyPI 中。请阅读<a href=packaging.html>《将 Python 类库打包》</a>一章了解更多详细信息。
-
- <p class=c>© 2001–9 <a href=about.html>Mark Pilgrim</a>