Python发展到现在,经历了多个版本,大家可以在Python官网查看,网址是https://www.python.org/downloads/截至目前,仍然保留的版本主要是基于Python 2.x和Python 3.x。下面列举了Python的历史版本。
版本号 |
发布时间 |
拥有者 |
GPL兼容 |
0.9.0—1.2 |
1991—1995 |
CWI |
是 |
1.3—1.5.2 |
1995—1999 |
CNRI |
是 |
1.6 |
2000 |
CNRI |
否 |
2.0 |
2000 |
Beopen.com |
否 |
2.1 |
2001 |
CNRI |
否 |
2.01 |
2001/6/22 |
PSF |
是 |
2.2——2.7.11 |
2001-2015 |
PSF |
是 |
2.7.12 |
2016.06 |
PSF |
是 |
2.7.13 |
2016.12 |
PSF |
是 |
3.x |
2008-至今 |
PSF |
是 |
Python 2.x和Python 3.x版本区别
和Python 2.x版本相比,Python 3.x版本在语句输出、编码、运算和异常等方面做出了一些调整,具体如下。
- print函数替代了print语句
在Python2x中,输出数据使用的是print语句。但是在Python 3.x中,print语句没有了,取而代之的是print函数。示例代码如下
Python 2.X
>>> print(3, 4)
(3, 4)
Python 3.X
>>> print(3, 4)
3 4
- Python3x默认使用UTF-8编码
Python 2.0中有ASCII Str()类型,Unicode()是单独的,不是byte类型。在 Python 3.x版本
的源代码中,默认使用的是UTF-8编码,从而可以很好地支持中文或其他非英文字符。例如,
输出一句中文,使用 Python 2.x和 Python 3.x的输出结果如下所示:
Python 2.X
> string demo = "我爱北京天安门”
>> string_demo
‘xe6x88x91xe7\x88xhb1)xe5\x8cx97\xe4xhaxacxe5\xa4xa9)xe5\xaex89xe9x97xa8’
Python 3.x
>> string_demo= "我爱北京天安门”
>> string_demo
‘我爱北京天安门’
- 除法运算
和其他语言相比,Python语言的除法非常高端,它的除法运算包含两个运算符,分别是和这两个运算符在Pyhon 2.x和Python 3.x中的使用如下所示。
- 运算符/
在Pyhon 2.x中,使用运算符/进行除法运算的方式和Java、C语言相似,整数相除的结个整数,浮点数除法会保留小数点的部分得到一个浮点数的结果。但是,在Python3x中运算符进行除法运算,整数之间的相除,结果也会是浮点数。示例代码如下:
Python 2.X
>>> 1/2
0
>>> 1.0/2.0
0.5
Python 3.X
>>> 1/2
0.5
(2)运算符//
使用运算符进行的除法运算叫作floor除法,这种除法会对除法的结果自动进行一个floor操作。使用这种运算符进行的除法运算,在 Python 2.x和 Python 3.x中是一致的。示例代码如下:
Python 2.X
>>> -1//2
-1
Python 3.x
>>> -1//2
-1
需要注意的是,使用运算符//进行的除法是执行floor操作,即获取不大于结果值的最大整数(向下取整)。
4、异常
在 Python3x版本中,异常处理改变的地方主要如下。
(1)在 Python2x版本中,所有类型的对象都是直接被抛出的,但是在 Python 3.x版本中,只有继承自 BaseException的对象才可以被抛出。
(2)在 Python2x版本中,捕获异常的语法是”except Exception,var”。在 Python 3.x版本中,引入了as关键字,捕获异常的语法变更为“except Exception as var”
(3)在 Python2x版本中,处理异常使用“raise Exception,args";在 Python 3.x版本中,处理异常使用“raise Exception(args)”。
(4)Python 3.x版本中取消了异常类的序列行为和.message属性。
关于 Python 2.x版本中和 Python 3.x版本中处理异常的示例代码如下:
Python 2.x
>> >try:
… raise TypeError, "类型错误”
… except TypeError, err:
… print err.message
…
类型错误
Python 3.x
>> >try:
… raise TypeError("类型错误")
… except TypeError as err;
… print(err)
…
类型错误
5、八进制字面量表示
在 Python3x中,表示八进制字面量的方式只有一种,并且必须写成“0o1000”这样的方式,原来“01000的方式不能使用了。示例代码如下:
Python 2.x
>>>0o1000
512
>>>01000
512
Python 3.x
>>01000
File "<stdin>", line 1
01000
^
SyntaxError: invalid token
>>>0o1000
512
6、不等于运算符
Python2x的不等于运算符有两种写法:!=和<>,但是, Python3x中去掉了<>,只有!=种写法。示例代码如下:
Python 2.X
>>>1 != 2
True
>>> 1 <> 2
True
Python 3.x
>>> 1 != 2
True
>>> 1 <> 2
File "<stdin>", line 1
1<>2
SyntaxError: invalid syntax
>>>
7、数据类型
Python中数据类型的改变如下。
- Python 3.x去除了long类型,现在只有一种整型int,但它的行为就像是 Python 2.X版本的long。
- Python 3.x新增了bytes类型,对应于Python 2.x版本的八位串,定义一个 bytes字面量的方法如下所示:
>>> bytes_demo = b'china’
>>> type(bytes_demo)
<type 'bytes’>
字符串对象和bytes对象可以使用.encode() (str→bytes)或者.decode() (byte→str)方法相互转化。示例代码如下。
>>> string_demo = bytes demo decode ()
>>> string_demo
‘china’
>> > bytes_demo = string_demo.encode ()
>>> bytes_demo
b' chinat’
(3)python 3.x中,字典的keys(),itmes()和values()方法用返回视图代替列表,而2.x版本中的iterkeys()等函数都被废弃。同时去掉的还有has_keys()方法,用in代替。
推荐了解热门学科
区块链培训
软件测试培训