将Python 2转换为Python 3(使用Python 2样式执行)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Python 2转换为Python 3(使用Python 2样式执行)相关的知识,希望对你有一定的参考价值。
我在Python 2中有一个代码,我想将其转换为Python 3,但代码的行为必须与Python 2解释器完全相同。
特别是除法必须像Python 2解释器一样。
我尝试使用futurize
第1阶段和第2阶段,但是在代码上仍然只是/
,它会在执行时产生错误,因为返回的数字是float
类型而不是类型int
(这是在Python 2解释器上执行的代码的默认行为)。
编辑:3 // 2 = 1.0
这是Python 3中的float
。有没有办法返回int
?
答案
Futurize / Modernize / 2to3无法静态分析哪个分区是整数除法。
您需要在转换后的代码中手动完成除法运算,并找出哪些应该使用//
进行整数除法,哪些应该使用/
进行实际除法。
当然,您的代码库的测试用例应该在这里找到任何回归。 ;)
另一答案
整数除法运算符是python 3中的//
。
>>> 3 / 2
1.5
>>> 3 // 2
1
编辑:我知道从两个版本的python获得兼容行为的唯一方法是对python 2 /
操作进行未来化,并将在python 2程序中期望整数除法的任何实例转换为使用//
,它适用于两者的整数除法python 2和3。
以上是关于将Python 2转换为Python 3(使用Python 2样式执行)的主要内容,如果未能解决你的问题,请参考以下文章
python之模块py_compile用法 (将py文件转换为pyc文件)