博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一键将Python2代码转成Python3小记,
阅读量:4300 次
发布时间:2019-05-27

本文共 1745 字,大约阅读时间需要 5 分钟。

以前刚学Python的时候就用过Python自带的那个库,2to3,记得当时没成功,今天练习tornado的时候时候又碰到2转3的问题,又尝试了下,发现还挺简单的。。。

Python2 asr.py文件的代码:

#asy.pyimport timeimport threaddef long_io(callback):    """将耗时的操作交给另一线程来处理"""    def fun(cb): # 回调函数作为参数        """耗时操作"""        print "开始执行IO操作"        time.sleep(5)        print "完成IO操作,并执行回调函数"        cb("io result")  # 执行回调函数    thread.start_new_thread(fun, (callback,))  # 开启线程执行耗时操作def on_finish(ret):    """回调函数"""    print "开始执行回调函数on_finish"    print "ret: %s" % ret    print "完成执行回调函数on_finish"def req_a():    print "开始处理请求req_a"    long_io(on_finish)    print "离开处理请求req_a"def req_b():    print "开始处理请求req_b"    time.sleep(2) # 添加此句来突出显示程序执行的过程    print "完成处理请求req_b"def main():    req_a()    req_b()    while 1: # 添加此句防止程序退出,保证线程可以执行完        passif __name__ == '__main__':    main()

在pycharm终端执行:

2to3 -w asy.py

-w 是直接覆盖源文件,然后会生成一个asy.py.bak的备份文件,

执行后的结果代码就变成Python3语法的了:

import timeimport _threaddef long_io(callback):    """将耗时的操作交给另一线程来处理"""    def fun(cb): # 回调函数作为参数        """耗时操作"""        print("开始执行IO操作")        time.sleep(5)        print("完成IO操作,并执行回调函数")        cb("io result")  # 执行回调函数    _thread.start_new_thread(fun, (callback,))  # 开启线程执行耗时操作def on_finish(ret):    """回调函数"""    print("开始执行回调函数on_finish")    print("ret: %s" % ret)    print("完成执行回调函数on_finish")def req_a():    print("开始处理请求req_a")    long_io(on_finish)    print("离开处理请求req_a")def req_b():    print("开始处理请求req_b")    time.sleep(2) # 添加此句来突出显示程序执行的过程    print("完成处理请求req_b")def main():    req_a()    req_b()    while 1: # 添加此句防止程序退出,保证线程可以执行完        passif __name__ == '__main__':    main()

 

不过感觉这个标准库也就处理一下print这种简答的语法转换,我再换一个腾讯实时转写的接口代码就不行了,虽然也对urlib做了转换,但还是需要手动改一些。

不过能转print也方便不少了

ps:想吐槽Python2和Python3的兼容!

pps:详细内容请看官方文档,已经有中文的官方文档了!虽然还不太全

 

转载地址:http://ldxws.baihongyu.com/

你可能感兴趣的文章
iOS在Xcode6中怎么创建OC category文件
查看>>
Expanding User-Defined Runtime Attributes in Xcode with Objective-C
查看>>
iOS7 UITabBar自定义选中图片显示为默认蓝色的Bug
查看>>
提升UITableView性能-复杂页面的优化
查看>>
25 iOS App Performance Tips & Tricks
查看>>
那些好用的iOS开发工具
查看>>
iOS最佳实践
查看>>
使用CFStringTransform将汉字转换为拼音
查看>>
更轻量的 View Controllers
查看>>
Chisel-LLDB命令插件,让调试更Easy
查看>>
时间格式化hh:mm:ss和HH:mm:ss区别
查看>>
Objective-C Autorelease Pool 的实现原理
查看>>
编程语言大牛王垠:编程的智慧,带你少走弯路
查看>>
ios指令集以及基于指令集的app包压缩策略
查看>>
iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
查看>>
3、JavaWeb学习之基础篇—JSP
查看>>
4、JavaWeb学习之基础篇—Session
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>
reRender属性的使用
查看>>