python2.x与python3.x的区别

字符串类型
python中有两种字符类型:字节字符串和文本字符串。

python2
字节字符串 str bytes

python3
文本字符串 Unicode str

默认字符
python2中默认的字符串类型默认是ASCII,python3中默认的字符串类型是Unicode。
True和False
py2:True 和 False 在 Python2 中是两个全局变量,可以为其赋值或者进行别的操作,初始数值分别为1和0,虽然修改是违背了python设计的原则,但是确实可以更改

输入函数
py2:input_raw()

py3:input()
print

python2中,print是个特殊语句,python3中print是函数。

python2:print 'hello word!'

python3:print('hello word!',file=sys.stderr)

除法 /

python2中/的结果是整型,python3中是浮点类型。

导入

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

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

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

python3中完全移除旧式类,所有类都是新式类,但仍可显式继承object类。
在使用super()的不同
py2:必须显示的在参数中写上基类

py:直接无参数调用即可
元类声明

python2中声明元类:metaclass = MetaClass

python3中声明元类:class newclass(metaclass=MetaClass):pass

异常

python2中引发异常:raise ValueError,'Invalid value'

python3中引发异常:raise ValueError('Invalid value')——在python2中也生效

字典

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

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

模块合并

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

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

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

重命名模块

python3 python2
Configparser ConfigParser
filter itertools.ifilter
input raw_input
map itertools.imap
range xrange
functools.reduce reduce
socketserver SocketServer
zip itertools.izip

不等运算符
Python 2.x中不等于有两种写法 != 和 <>

Python 3.x中去掉了<>, 只有!=一种写法

猜你喜欢

转载自www.cnblogs.com/xiayuhao/p/9419597.html