【Python基础知识库】Python2.x 与Python3.x的主要区别

    技术2025-12-21  19

    详细参考

    输入, py2中:raw_input(); py3中:input()

    输出, py2中:print语句; py3中:print()函数

    除法,py2中整数间进行’/‘和’//‘运算返回的是整数,而py3的’/'运算返回的是浮点数

    遍历范围,py2中:range()或xrange(); py3中:不等于,py2中:range

    不等于,py2中:<>或!= ; py3中:!=

    编码问题,py3默认使用unicode,字节是bytes;而py2中字节是str, 默认支持ascii编码,unicode需要在前面加u

    异常,py2中:except exec, var ; py3中:except exec as var

    八进制字面量,py2中:0o777或0777 ; py3中:0o777

    去掉了repr表达式``,py2中:反引号相当于repr()的作用; py3中:去除反引号写法

    多个模块变化

    旧的名字新的名字_winregwinregConfigParserconfigparsercopy_regcopyregQueuequeueSocketServersocketserverreprreprlib

    数据类型,py3中去除long类型,只有int

    rasie,py2中:raise IOError, “file error”; py3中:raise IOError(“file error”)

    去除.next(),py2中:next(generator)和generator.next(); py3中:next(generator)

    py3中for循环变量不会导致命名空间泄漏

    py3中不能比较不可排序类型,需同类型比较

    py3中range、zip、map、reduce、filter等返回的是可迭代对象,而不是列表

    py3中新增asynico内置库,async/await原生协程支持异步编程

    py3中移除cmp函数

    py3中去除元组参数解包

    增加了@abstractmethod和 @abstractproperty两个 decorator,编写抽象方法(属性)更加方便

    移除了cPickle模块,可以使用pickle模块代替

    移除了new模块

    移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块

    移除了imageop模块

    迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法

    Processed: 0.012, SQL: 9