首页技术文章正文

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运维

分享到:
在线咨询 我要报名
和我们在线交谈!