Luceda IPKISS py2-py3 迁移指南

Luceda 3.9 已经全面升级至 python3 版本,如何将代码从 python2 版本迁移至 python3 版本呢?

Python3 与 Python2 的主要区别

1. print 函数

Python2 既可以使用小括号的方式,也可以使用一个空格来分隔打印内容,Python3 使用 print 函数必须要用小括号包含打印内容。

2. 除法运算

Python 中的除法较其它语言显得非常高端,有套很复杂的规则。Python 中的除法有两个运算符,/ 和 //。
  • / 除法: 在 Python 2.x 的 / 除法中,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。在 Python 3.x 的 / 除法不再这么做了,对于整数之间的相除,结果也会是浮点数。
  • //除法: 这种除法为floor除法,在python2和python3中没有区别。

3. Unicode

Python3 支持使用 Unicode (utf-8),因此可以直接在代码中使用中文字符了。

4. 包和模块

Python2 默认是按照相对路径导入模块和包,Python3 默认则是按照绝对路径导入。
此外,在 Python3.6 以后,__init__.py 不再作为包的必备文件。

5. 迭代函数

对于 Map, filter, range, zip, items, values, keys 等函数,返回值不同。
例如 map():  
  • Python 2:map()函数返回的是一个列表;
  • Python 3:map()函数返回的一个map的object,需要用list(map())去转换一下数据类型,否则返回的就是一个可以调用迭代的对象。

如何快速迁移代码

Python 2to3 工具

Luceda 提供了python 2 to 3的迁移工具:2to3
  • 在 Pycharm 或 VSCode 的 terminal 中输入2to3 .,即可自动完成工程中所有文件的更新建议。
  • 在 Pycharm 或 VSCode 的 terminal 中输入2to3 . -w,即可自动完成工程中所有文件的代码更新。
注意
使用之前请先做好代码备份!

使用步骤

1. 在 VSCode 中打开需要更新的 Python 代码,配置好 Luceda 3.10 的 Python3解释器,并在终端中输入 2to3 .
2. 之后项目文件夹里面的所有代码都会被检查以及更改,终端中会显示更改的文件与内容。
如有问题,请在技术支持群中联系 Luceda 工程师。更详细的迁移指南请查看我们的官方技术文档:https://docs.lucedaphotonics.com/history/porting380-390-py3#py3-migration
2023-09-21
0