Python编程之美:最佳实践指南 - (EPUB全文下载)
文件大小:0.34 mb。
文件格式:epub 格式。
书籍内容:
Python编程之美:最佳实践指南
第1部分 起步
第2部分 步入正题
第3部分 场景化指南
附录A 补充说明
第1部分 起步
第1部分受到了Stuart Ellis的《Windows环境下的Python指南》(http://www.stuartellis.name/articles/python-development-windows/)一文的启发,主要介绍如何搭建一个Python环境,包含以下几章。
第1章,选择一个解释器:对比Python 2和Python 3,并讨论了CPython之外其他可选择的解释器。
第2章,恰当地安装Python:演示如何获取Python、pip和virtualenv。
第3章,搭建开发环境:描述Python开发者最喜爱的一些文本编辑器和集成开发环境。
第1章 选择一个解释器
Python 2与Python 3的状况对比
选择Python解释器时始终存在一个重要的问题:选择Python 2还是Python 3。答案并非像有些人想的那么显而易见(虽然大家对Python 3的关注度与日俱增)。
Python状况的说明如下所示。
●长久以来,Python 2.7都是标准选择。
●Python 3对语言做了重大改变,令有些开发者不开心[1]。
●2020年Python 2.7会进行必要的安全更新(https://www.python.org/dev/peps/pep-0373/)。
●Python 3持续演进,就像过去那些年的 Python 2那样。
至此你应该明白为什么选择Python 2还是Python 3不是一个容易的决定了。
建议
在我们看来,真正精明的人[2]会使用Python 3。但如果你迫于无奈只能使用Python 2,那也没什么,至少你仍然在用Python,以下是我们的建议。
如果你满足下面3个条件之一,那么请使用Python 3。
●你喜爱Python 3。
●你不知道选择哪一个。
●你勇于拥抱变化。
如果你满足下面3个条件之一,那么请使用Python 2。
●你喜爱Python 2,并且对Python 3的未来持悲观态度。
●切换到Python 3会影响软件的稳定性[3]。
●你所依赖的软件要求使用Python 2。
那就选择Python 3吗
如果你正要选择一个Python解释器,也没什么偏见,那么就使用最新的Python 3.x。每个版本都会带来新的标准库模块、安全补丁和问题修复。除非你有特殊原因,比如某个库为Python 2独有,Python 3没有合适的替代库;要求使用某个特定的Python实现;或者Python 2让你(像我们中的某些人一样)欢欣鼓舞,否则都不要使用Python 2。
参照《我能使用Python 3吗》(https://caniusepython3.com/),看看是否有任何你正依赖的Python项目阻拦你采用Python 3。
《Python 2还是Python 3》(http://bit.ly/python2-or-python3),这篇文章清晰地说明了语言标准上不再向后兼容的一些原因,并提供了一些详细说明标准差异的文档链接。
如果你是一个初学者,相比Python版本之间的兼容性问题,还有很多更重要的事情要考虑,那么先使用Python,再考虑版本兼容问题。
Python的不同实现
大家说起Python这个词,通常不仅是指这门语言,也指代了CPython这个实现。Python实际上是一门语言的一个标准规范,实现方式可以多种多样。
不同的实现也许对某些库的兼容性有所不同,或者运行效率存在差异。无论你选择哪种Python实现,纯Python实现的库应该都能正常工作,但那些C实现的库(例如,NumPy)则不然。本节简要介绍几种最流行的Python实现。
本书假定你正在使用Python 3的标准CPython实现,在涉及Python 2时通常也会添加一些说明。
CPython
CPython(http://www.python.org/)是Python的参考性实现 [4]。它用C语言编写,先将Python代码编译成中间字节码,然后在虚拟机上解释执行。CPython对Python包和C扩展模块[5]的兼容性最好。
编写开源Python代码时,如果希望覆盖更多的潜在用户,那么就使用CPython。如果Python包的功能依赖于C扩展,那么CPython是唯一的选择。
因为CPython是参考性实现,所以Python语言的所有版本都用C语言实现过。
Stackless
Stackless Python(https://bitbucket.org/stackless-dev/stackless/wiki/Home)在普通CPython(因此CPython可以使用的库,它也能使用)的基础上打了一个补丁,它将Python解释器与调用栈解耦,从而在某些情况下可以改变代码的执行次序。Stackless引入了tasklet的概念,它可以封装函数,将函数转变成“微线程”,这种微线程可以序列化到磁盘,以便将来执行和调度,默认是轮询执行。
greenlet库为CPython用户实现了这种栈切换功能,在PyPy中也部分实现了这种功能。
PyPy
PyPy(https://pypy.org/)在是用RPython实现的一个Python解释器。RPython是Python语言的一个有限子集,在运行时可以推断出变量类型,因此可以应用某些优化策略。PyPy的特色是JIT编译器,它支持多种编译器后端,比如C、通用中间语言(CIL)及Java虚拟机(JVM)字节码。
PyPy的目标是在提升性能的同时尽可能最大程度地兼容CPython参考性实现。如果想提升Python代码的性能,那么PyPy值得一试。一组基准测试表明目前PyPy的执行速度至少是CPython的5倍。
PyPy支持Python 2.7,PyPy 3则对应Python 3。两个版本都可以从PyPy的下载页(http:// ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Python编程之美:最佳实践指南 - (EPUB全文下载)