全国咨询/投诉热线:400-618-9090

首页技术文章正文

Python 2.x和Python 3.x版本有什么不同?【python技术】

更新时间:2019-07-15 来源:黑马程序员 浏览量:


Python 2.x和Python 3.x版本区别

和Python 2.x版本相比,Python 3.x版本在语句输出、编码、运算和异常等方面做出了一些调整,具体如下。

1563181470986_python.jpg

 

1.   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

 

2. 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

‘我爱北京天安门’

 

3. 除法运算

和其他语言相比,Python语言的除法非常高端,它的除法运算包含两个运算符,分别是和这两个运算符在Pyhon 2.x和Python 3.x中的使用如下所示。

 

(1) 运算符/

在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中数据类型的改变如下。

(1)Python 3.x去除了long类型,现在只有一种整型int,但它的行为就像是 Python 2.X版本的long。

 

(2)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代替。


推荐了解热门学科
java培训

Python人工智能

Web前端培训

PHP培训
区块链培训

影视制作培训
C++培训

产品经理培训
UI设计培训

新媒体培训

产品经理培训

Linux运维

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名