首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python2代码转换到Python3

Python2代码转换到Python3

作者头像
云深无际
发布2021-09-14 15:48:00
发布2021-09-14 15:48:00
6580
举报
文章被收录于专栏:云深之无迹云深之无迹

最近发现好多的代码都是Python2写的现在满大街的Python3,真头秃。

找了一下解决的方案,发现是内置的函数可以干这个,再Python安装的Script这个文件夹下。

然后我发现Aaconda和普通的解释器这个文件的位置不一样。

代码语言:javascript
复制
C:\Anconda\Scripts

Anconda的位置

代码语言:javascript
复制
C:\Users\yunswj\AppData\Local\Programs\Python\Python36\Tools\scripts

普通解释器的位置

两个文件做比较

代码语言:javascript
复制
#!/usr/bin/env python
import sys
from lib2to3.main import main

sys.exit(main("lib2to3.fixes"))

这就是里面的代码,看来是引了一个包

everything这个东西,我给1万分

我们直接导航到一个lib里面看

代码语言:javascript
复制
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]

代码语言:javascript
复制
https://www.python.org/dev/peps/pep-3113/

如果深挖发现是一个提议

可以看到在3.0的时候这个决议通过

以及为什么要废除

其实我也没有读懂

代码语言:javascript
复制
def fxn((a, (b, c))):
    pass

转换为:

代码语言:javascript
复制
def fxn(a_b_c):
    (a, (b, c)) = a_b_c
    pass

我也看不懂,还是搞个例子动手一下好啦~

上面说了,因为knn的语法毛病:

knn的毛病

导航到这里

代码语言:javascript
复制
2to3.exe .\knn.py

无参数的情况就是把要修改的地方打印出来

日志太长了,我就不放了

直接看这里的差异

转换前

转换后

这里还对文件备份

没有错了,就是输入的问题

代码语言:javascript
复制
-w -n效果是修改但不留备份文件

-f 给出明确的修复集
代码语言:javascript
复制
https://docs.python.org/3.0/library/2to3.html

最后的传送门

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档