[Python]_[初级]_[关于Python3兼容Python2的方案]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/infoworld/article/details/86673026

场景

  1. Python2在最近几年已经不适合用在项目里了, 比如urllib3不支持,https TLS不支持, 导致访问https网络总有问题.

  2. 在持续集成的项目里, 自动构建是必不可少的开发流程, 开发人员提交代码, 持续集成程序检测到代码变更, 自动构建项目. 如果项目需要做一些资源打包和处理等等,在Windows上批处理是不能胜任的, 使用Python基本就是必然的选择. Java项目有自己的 gradle语言自然不用Python, 但是C/C++项目自然得考虑Python.

  3. Python输出变量时, print基本上是最快的偷懒的方案. 问题就是你本机如果是Python3,而服务器环境是Python2时, 这就需要同时支持两个版本的兼容实现, 怎么做?

说明

  1. Python官方自然考虑到了这个问题, 可以在参考里找到更详细的说明. 这里主要是列举了一些兼容2,3的实现.

  2. 如果只是想直接把Python2项目转换为Python3实现, 不妨使用2to3程序, 看参考.

例子

print

  1. printPython2时是内置的语句, 还是关键字. 到了Python3时就只是一个函数了. 如果需要在Python2,3都支持print输出, 得这样写:
from __future__ import print_function

#print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout]) 
print(sys.argv[0],sys.argv[1],sys.argv[2])

open

  1. Python3可以使用内置函数open打开指定编码的文件,但是Python2不行. 如果需要兼容Python2,就需要使用io.open, 比如打开编辑unicode的文件.
f = io.open(path,"r",-1,"utf-16")

参考

Porting Python 2 Code to Python 3
25.4. 2to3 - Automated Python 2 to 3 code translation

猜你喜欢

转载自blog.csdn.net/infoworld/article/details/86673026