python2和Python3有什么区别

257 阅读2分钟

第一次编写

  1. python2 默认编码ASCII python3 默认编码Unicode python2 Unicode字符串序列 str字节序列 python3 str字符串序列 bytes字节序列

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

  3. python2中,print是个特殊语句,python3中print是函数。 python2:print 'hello word!' python3:print('hello word!',file=sys.stderr)

  4. python2中/的结果是整型,python3中是浮点类型。 python2中的包导入顺序:标准库—相对倒入(即当前目录)—绝对导入(sys.path)

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

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

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

  8. python2中声明元类:metaclass = MetaClass

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

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

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

  12. python2中处理异常: try: raise ValueError,'Invalid value' except ValueError,e: pass

  13. python3中处理异常: try: raise ValueError,'Invalid value' except ValueError as e:#在python2中也生效 pass

  14. python2中异常链会丢失原始异常信息,即:处理B异常时引发了A异常,B异常信息会丢失。

  15. python3中将原始异常信息赋值给context属性。并且可以显式指定一个异常作为另一个异常的子句:raise DatabaseError() from IOError()

  16. 字典 python2中的dict类中的keys、values和items均返回list对象,iterkeys、itervalues和iteritems返回生成器对象。 python3中移除了list、只返回一个生成器的对象,只保留视图(生成器),但方法名为:keys、values和items.

  17. 模块合并 python2中的StringIO和cStringIO合并为python3中的io python2中的pickle和cPickle合并为python3中的pickle。 python2中的urllib、urllib2和urlparse合并为python3中的urllib

  18. 重命名模块:

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