Python2代码转换到Python3
最近发现好多的代码都是Python2写的现在满大街的Python3,真头秃。
找了一下解决的方案,发现是内置的函数可以干这个,再Python安装的Script这个文件夹下。
然后我发现Aaconda和普通的解释器这个文件的位置不一样。
C:\Anconda\Scripts
Anconda的位置
C:\Users\yunswj\AppData\Local\Programs\Python\Python36\Tools\scripts
普通解释器的位置
两个文件做比较
#!/usr/bin/env python
import sys
from lib2to3.main import main
sys.exit(main("lib2to3.fixes"))
这就是里面的代码,看来是引了一个包
everything这个东西,我给1万分
我们直接导航到一个lib里面看
C:\Anconda\Lib\lib2to3
先看看,又不要钱
main函数的开头,导入了一些常见的包
然后第一个函数就是计算文本差异的函数
完整的列表树
各种要修复的语法差异,牛啊
在这段代码里面报错了
可以看到是knn这个算法里面的子函数的毛病
Pyhcarm更加的彻底
拆箱的tuple元组参数在python3中不得到支持”即此种参数形式在python3下废弃了。
Python 2 :lambda (x,y):x+y
Python 3 :lambda x_y : x_y[0]+x_y[1]
将(x,y)替换成 x_y , x 替换成 x_y[0] ,y 替换成 x_y[1]
https://www.python.org/dev/peps/pep-3113/
如果深挖发现是一个提议
可以看到在3.0的时候这个决议通过
以及为什么要废除
其实我也没有读懂
def fxn((a, (b, c))):
pass
转换为:
def fxn(a_b_c):
(a, (b, c)) = a_b_c
pass
我也看不懂,还是搞个例子动手一下好啦~
上面说了,因为knn的语法毛病:
knn的毛病
导航到这里
2to3.exe .\knn.py
无参数的情况就是把要修改的地方打印出来
日志太长了,我就不放了
直接看这里的差异
转换前
转换后
这里还对文件备份
没有错了,就是输入的问题
-w -n效果是修改但不留备份文件
-f 给出明确的修复集
https://docs.python.org/3.0/library/2to3.html
最后的传送门
赞 (0)