Python 2.x与Python 3​​.x的简单区别

本文概述了Python从版本2升级到版本3的主要变化,包括print语句转为函数,Unicode成为默认字符串类型,除法运算符行为的改变,异常处理语法的更新,导入模块的顺序调整,类定义的改进,字典操作的变化,模块的合并与重命名等。这些变化反映了Python语言在设计上的进步和对Unicode、异常处理等方面的支持增强。
摘要由CSDN通过智能技术生成

目录

1、print 函数

2、Unicode

3、除法运算

4、异常

5、导入

6、类

7、字典

8、模块合并

9、重命名模块


1、print 函数

print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "cat"
print ("cat") #注意print后面有个空格
print("cat") #print()不能带有任何其它参数

然而,Python 2.6实际已经支持新的print()语法:

from __future__ import print_function
print("cat", "dog", sep=', ')

2、Unicode

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。

现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。

版本Python2Python3
字节字符串strbytes
文本字符串Unicodestr

python2中默认的字符串类型默认是ASCII,python3中默认的字符串类型是Unicode。

由于 Python3.X 源码文件默认使用utf-8编码,这就使得以下代码是合法的:

Python 2.x
>>> str = "我爱北京天安门"
>>> str
'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xb0\xaePython'
>>> str = u"我爱北京天安门"
>>> str
u'\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7231Python'

Python 3.x

>>> str = "人生苦短,我爱Python" >>> str '人生苦短,我爱Python'

3、除法运算

Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//

首先来说/除法: 在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

Python 2.x:

>>> 1 / 2
0
>>> 1.0 / 2.0
0.5

Python 3.x:

>>> 1/2
0.5

而对于//除法,这种除法叫做floor除法,会对除法的结果自动进行一个floor操作,在python 2.x和python 3.x中是一致的。

python 2.x:

>>> -1 // 2
-1

python 3.x:

>>> -1 // 2
-1

4、异常

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

捕获异常的语法由 except exc, var 改为 except exc as var

使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

  • 1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
  • 2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5、导入

python2中的包导入顺序:标准库—相对倒入(即当前目录)—绝对导入(sys.path)

python3中的包导入顺序:标准库—绝对导入(如果想要相对导入,使用from .moudel)

6、类

python2中默认类是旧式类,需要显式继承新式类(object)来创建新式类。

python3中完全移除旧式类,所有类都是新式类,但仍可显式继承object类。

7、字典

python2中的dict类中的keys、values和items均返回list对象,iterkeys、itervalues和iteritems返回生成器对象。

python3中移除了list、只返回一个生成器的对象,只保留视图(生成器),但方法名为:keys、values和items。

8、模块合并

python2中的StringIO和cStringIO合并为python3中的io

python2中的pickle和cPickle合并为python3中的pickle。

python2中的urllib、urllib2和urlparse合并为python3中的urllib

9、重命名模块

Python2Python3
ConfigParserConfigparser
raw_inputinput
itertools.ifilterfilter
itertools.imapmap
reducefunctools.reduce
xrangerange
itertools.izipzip
SocketServerSocketserver

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头脑灵活的胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值