Python 3.x不兼容Python 2.x,但这两个在语法层面差别不大。
Python 3.x做了部分修改,但大体语法与Python 2.x相似,Python 3.x的使用者可以轻松阅读Python 2.x编写的代码。
本节将从项目改造入手,以帮助大家了解它们之间的差异。
痛点:前段时间,集成一个插件到postgres中,Python的库是Python2,需要升级Python3,这里记录一下迁移的改动,基本上涵盖了大部分的改造,如果大家的项目也是类似的情况,可以直接全局搜索代码替换这些变化,这样可以快速魔改,兼容Python3。
简单来说,Python2到Python3又如下区别:print函数、整除、Unicode、迭代器、不等运算符、数据类型、异常处理、包管理、True与False等。
具体来说,在项目中涉及到的改造变化如下:
- dict.iteritems() -> dict.items()
- from x import y -> from .x import y
- sys.maxint -> sys.maxsize
- isinstance(obj, StringType) -> isinstance(obj, str)
- global -> def function wrapper a global var
- dict.keys() -> list(dict.keys())
- long -> int
- try Exception, e -> try Exception as e
- unicode -> str
- dict.has_key(key) -> if key in dict
- iterator.next() -> next(iterator)
- string.lower(s) -> s.lower()
- map() -> list(map())
- / -> //
- 0L -> 0
- print "" -> print("")
本节完~