Contents
1.2. Python的版本¶
Python自诞生到现在已经30多年了,其官方发行了两个大的版本:Python 2和Python 3。Python 2已经在2020年停止官方的维护,本书以Python 3的较新版本作为示例演示。
1.2.1. 1.Python2 与 Python3 的主要区别¶
1.默认编码¶
Python2 代码文件默认是ASCII编码;Python3
代码文件默认是UTF-8编码。
同样是字符串类型,在Python2代表的是经过编码后的bytes类型;而Python3中则是Unicode类型。
2.print函数¶
Python2 中print是语句;Python3 中print()是函数。
# Python2
print 'hello Python'
# Python 3
print('hello Python')
3.True/False¶
Python2中True和False并不是保留字而是全局变量,因此我们甚至可以在编程时改变其值。
当然这就会非常的危险。
Python3中自然就解决了这个隐患,True和False正式被作为保留字,且其值也不再可以被更改。
4.nonlocal¶
Python3中引入的新的保留字,其作用与global保留字有类型的作用。
所不同的是global是引入全局的变量来替代局部变量;nonlocal则引入全局与局部之间的变量来替代局部变量。
# global demo
j = 1
def foo():
j = 2
def bar():
global j
j += 1
bar()
print(j) # 2
foo()
# nonlocal demo
j = 1
def foo():
j = 2
def bar():
nonlocal j
j += 1
bar()
print(j) # 3
foo()
5.异常捕获¶
异常捕获的差异仅仅体现在语法上的变化。由原来的
# Python2
try:
1 / 0
except Exception, e:
pass
改为
# Python3
try:
1 / 0
except Exception as e:
pass
6.除法运算符¶
Python中有2种除法运算符。
/:普通除法
//:地板除,即取整除法,不保留小数部分
Python3中的改变只针对普通除法。把普通除法与地板除的功能分的非常明确。
# Python2
3 / 2 # 1
3 / 2.0 # 1.5
Python3中普通除法不再具备地板除的能力。
# Python3
3 / 2 # 1.5
3 / 2.0 # 1.5
7.range函数¶
Python3中range函数等同于Python2中的xrange。而Python2中存在的xrange则直接在Python3中被移除掉。
8.input函数¶
Python3中input函数等同于Python2中的raw_input。而Python2中存在的raw_input则直接在Python3中被移除掉。
9.file函数¶
Python2中存在的file在Python3中被移除掉,仅保留open函数用于文件的读写操作。
10.<>运算服务¶
Python2中存在的<>在Python3中被移除掉,仅保留!=用于操作数之间的不等于比较。
11.``表达式¶
Python2中存在的`在Python3中被移除掉,仅保留repr`函数用于显示字符串的源信息。
12.long类型¶
Python2中存在的long在Python3中被移除掉,仅保留int代表int、long类型。
13.double类型¶
Python2中存在的double在Python3中被移除掉,仅保留float代表float、double类型。
1.2.2. 2.公开发行版本¶
除了官方发行的Python版本(CPython),还有很多其他的公开发行版本。具体的发行版本列表如下。
PyPy——JIT版本的Python发行版。
Jython——运行于JVM之上的Python发行版。
IronPython——运行于.NET之上的Python发行版。
Anaconda——专用于科学计算、数据分析、机器学习的发行版。
ActivePython——专用于科学计算的Python发行版。
这些发行版本主要解决特定场景的需求,本书所采用的是官方发行的CPython版本。