让你的python程序同时兼容python2和python3

你只需要对自己的代码稍微做些修改就可以很好的同时支持python2和python3的。下面我将简要的介绍一下如何让自己的python代码如何同时支持python2和python3。

放弃python 2.6之前的python版本

python 2.6之前的python版本缺少一些新特性,会给你的迁移工作带来不少麻烦。如果不是迫不得已还是放弃对之前版本的支持吧。

使用 2to3 工具对代码检查

2to3是python自带的一个代码转换工具,可以将python2的代码自动转换为python3的代码。当然,不幸的是转换出的代码并没有对python2的兼容做任何的处理。所以我们并不真正使用2to3转换出的代码。执行2to3 t.py 查看输出信息,并修正相关问题。

立即学习“Python免费学习笔记(深入)”;

使用python -3执行python程序

2to3 可以检查出很多python2&3的兼容性问题,但也有很多问题是2to3发现不了的。在加上 -3 参数后,程序在运行时会在控制台上将python2和python3不一致,同时2to3无法处理的问题提示出来。比如python3和python2中对除法的处理规则做过改变。使用-3参数执行4/2将提示 DeprecationWarning: classic int division 。

from __future__ import

“from __future__ import”后即可使使用python的未来特性了。python的完整future特性可见 __future__ 。python3中所有字符都变成了unicode。在python2中unicode字符在定义时需要在字符前面加 u,但在3中则不需要家u,而且在加u后程序会无法编译通过。为了解决该问题可以 “from future import unicode_literals” ,这样python2中字符的行为将和python3中保持一致,python2中定义普通字符将自动识别为unicode。

import问题

python3中“少”了很多python2的包,在大多情况下这些包之是改了个名字而已。我们可以在import的时候对这些问题进行处理。

try:#python2

   from UserDict import UserDict

   #建议按照python3的名字进行import

   from UserDict import DictMixin as MutableMapping

except ImportError:#python3

   from collections import UserDict

   from collections import MutableMapping

使用python3的方式写程序

python2中print是关键字,到了python3中print变成了函数。事实上在python2.6中已经带了print函数,所以对print你直接按照2to3中给出的提示改为新写法即可。在python3中对异常的处理做了些变化,这个和print类似,直接按照2to3中的提示修改即可。

检查当前运行的python版本

有时候你或许必须为python2和python3写不同的代码,你可以用下面的代码检查当前系统的python版本。

import sys

if sys.version > ‘3’:

   PY3 = True

else:

   PY3 = False

six

six 提供了一些简单的工具用来封装 Python 2 和 Python 3 之间的差异性。我并不太推荐使用six。如果不需要支持python2.6之前的python版本,即使不用six也是比较容易处理兼容性问题的。使用six会让你的代码更像python2而不是python3。

python3的普及需要每位pythoner的推动,或许你还无法立即升级到python3,但请现在就开始写兼容python3的代码,并在条件成熟时升级到python3。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2284276.html

(0)
上一篇 2025年2月27日 20:40:07
下一篇 2025年2月25日 23:11:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 分别用python2和python3伪装浏览器爬取网页内容

    python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容。但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容。 今天我来分享下载python2和python3中都是如…

    编程技术 2025年2月27日
    200
  • Python2安装说明

    1、python版本   Python 2.x的版本的,被称为Python2:是目前用的最广泛的,比如Python 2.7.12。   Python 3.x的版本的,被称为Python3:是最新的版本的,比如Python 3.5.2。长远来…

    2025年2月27日 编程技术
    200
  • 详解python3使用PyMysql连接mysql数据库步骤

    python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 目前MySQLdb并不支持python3.x , Python3.x连接MySQL的方案有:ours…

    编程技术 2025年2月27日
    200
  • 详解python3文件操作步骤

    步骤:打开文件-》操作文件-》关闭文件  打开文件 文件句柄 = open(‘文件路径’, ‘模式’) 登录后复制 指定文件编码 文件句柄= open(‘文件路径’,’模式’,encoding=’utf-8′) 登录后复制  为了防止忘记关…

    编程技术 2025年2月27日
    200
  • 详解python3中int整型的使用方法

    这篇文章主要介绍了关于python3中int(整型)的使用教程,文中介绍的非常详细,相信对大家学习或者使用python3能具有一定的参考价值,需要的朋友们下面来一起看看吧。 Python3支持三种不同的数值类型: 整型(int)&#8211…

    编程技术 2025年2月27日
    200
  • 详解python3中str字符串的使用方法

    这篇文章主要介绍了python3中str(字符串)的使用教程,文中介绍的非常详细,对python3中各种str字符串的操作都包含这篇文章中了,需要的朋友可以参考学习,下面来一起看看吧。 本文主要介绍的是python3中对str(字符串)的使…

    编程技术 2025年2月27日
    200
  • python3中对文件操作的详解

    步骤:打开文件-》操作文件-》关闭文件  打开文件 文件句柄 = open(‘文件路径’, ‘模式’) 登录后复制 指定文件编码 文件句柄= open(‘文件路径’,’模式’,encoding=’utf-8′) 登录后复制  为了防止忘记关…

    编程技术 2025年2月27日
    200
  • python3交互时隐藏输入密码的方法

    这篇文章主要为大家深度剖析了python3交互时隐藏输入密码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 # Auther: Aaron Fan#这个脚本请在命令行去执行才可以试出效果,pycharm这里无法测试这个脚本,切记!…

    编程技术 2025年2月27日
    200
  • 教你如何在Windows环境下安装python2和python3两个版本

    这篇文章主要介绍下windows(我用的win10)环境下的python2.x 和 python3.x 的安装,以及python2.x 与 python3.x 共存时的配置问题。 现在大家常用的桌面操作系统有:Windows、Mac OS、…

    2025年2月27日 编程技术
    200
  • python3中关于set语法的详细讲解

    这篇文章主要总结了关于python3中set(集合)的语法的相关资料,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。 介绍 set 顾明思义,就是个集合,集合的元素是唯一的,无序的。一个{ }里面放一些元…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论