chapter 1
Python3.x与Python2.7相比的主要变化
print()
是一个函数,必须加括号.- 捕获异常由
except ext, var
变为expect exc as vat
. - 弃用
<>
,改用!=
. from module import *
,只能用于模块,不能用在函数中.from .[module] import name
,是相对导入的唯一正确语法.sorted()
函数与列表的sort
方法不再接受cmp
参数,应用key
代替.- 整数除法
(1/2)
返回浮点数,取整用//
,浮点数也可以使用/
,5.0/2.0=2.0
.
语义化版本号
版本号格式:主版本号.次版本号.修订号
- 主版本号(MAJOR):不兼容的API修改
- 次版本号(MINOR):向后兼容的功能性新增
- 修订号(PATCH):向后兼容的问题修正
__feature__
模块:
将python中的新版本反向迁移到旧版本中:from __feature__ import <name>
PyPy
PyPy的目标是将python重写为Python.在PyPy中,Python解释器本身就是用Python编写的.在Python的CPython实现中,代码的底层实现都是由C语言编写的.但是在PyPy实现中,C代码层用Python完全重写.PyPy通常不用于生产环境.但是随着JIT的启用,PyPy在很多基准测试中比CPython快好几倍.JIT
JIT编译器,英文写作Just-In-Time Compiler,中文意思是即时编译器。JIT是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而动态解释执行的则是一句一句边运行边翻译。
PyPy与CPython的主要区别
- 使用垃圾回收,不是引用计数
- 集成跟踪JIT编译器,显著提高性能
- 借鉴stackless Python在应用层无栈的特性
Stackless Python
Stackless Python自称Python的增强版,它不依赖于C语言的调用栈,它在CPython的基础上进行了修改,使用有解释器管理的微线程替代依赖系统内核上下文切换和任务调度的普通线程,即轻量化又节约资源.
系统级环境隔离
- 使用Vagrant的全机虚拟化来创建并管理多个开发环境
- 容器化,是一种轻量级的虚拟化方法,内核与操作系统允许运行多个隔离的用户空间实例.
- 容器化与虚拟化的主要区别:
- Vagrant不能将隔离环境原样打包并部署到生产环境
- Docker可以将整个环境打包,发送到生产环境中并部署