python3兼容python2 print_python 字符串 r raw Python2 和 Python3 的区别及兼容技巧

前言

最近 Python 之父 Guido van Rossum(龟爷)终于在 Python 官方邮件组落实了 Python 2.7 的终焉之日(EOL)。

说的是 Python 2.7 的 EOL 日期最终确定为 2020 年 1 月 1 日,之后不会有任何更新,包括源码的安全补丁。

所以兼容Python3已经可以说非常必要了,但有些常用的库还没有升级到Python3,所以我们看下如何写出兼容2和3的代码。

Python 2 or 3 ?

Python 3 被钦定为 Python 的未来,于 2008 年末发布,是目前正在开发的版本。旨在解决和修正 Python 2 遗留的设计缺陷、清理代码库冗余、追求有且仅有一种最佳实践方式来执行任务等问题。

起初,由于 Python 3 不能向后兼容的事实,导致了用户采用缓慢,对初学者不友好等问题。但在 Python 社区的努力和决绝态度下,截至龟爷发出邮件之前,已经有了 21903 个 Packages 可以支持 Python 3.5,其中包括了绝大多数最受欢迎的封装库,与此同时也有越来越多的封装库(e.g. Django、Numpy)表示其新版本将不再支持 Python 2。

Python 2.7 于 3.0 之后的 2010 年 7 月 3 日发布,计划作为 2.x 的最后一个版本。Python 2.7 的历史任务在于通过提供 2 和 3 之间的兼容性措施,使 Python 2.x 的用户更容易将代码移植到 Python 3.x 上。那么如果你希望自己的代码能够兼容两个不同的版本,首先你起码要让代码能够正常的运行在 Python 2.7 上。

注:下文使用 P2 表示 Python 2.7;使用 P3 表示 Python 3.x。

不同与兼容

__future__ 模块是我们首先需要了解的,该模块最主要的作用是支持在 P2 中导入那些在 P3 才生效的模块和函数。是一个非常优秀的兼容性工具库,在下文中给出的许多 兼容技巧 实例都依赖于它。

特性在此版本可选在此版本内置效果

电脑技术002pc网认为此文章对《python 字符串 r raw Python2 和 Python3 的区别及兼容技巧》说的很在理。

nested_scopes2.1.0b12.2PEP 227:静态嵌套作用域

generators2.2.0a12.3PEP 255:简单生成器

division2.2.0a23.0PEP 238:除法操作符改动

absolute_import2.5.0a13.0PEP 328:Imports 多行导入与绝对相对路径

with_statement2.5.0a12.6PEP 343:with 语句

print_function2.6.0a23.0PEP 3105:print 语句升级为函数

unicode_literals2.6.0a23.0PEP 3112:Bytes 类型

(__future__ 功能列表)

统一不等于语法

P2 支持使用 <> 和 != 表示不等于。

P3 仅支持使用 != 表示不等于。

兼容技巧:

统一使用 != 语法

统一整数类型

P2 中整数类型可以细分为短整型 int 和长整型 long。

P3 废除了短整型,并统一使用 int 表示长整型(不再有 L 跟在 repr 后面)。

兼容技巧:# Python 2 only

k = 9223372036854775808L

# Python 2 and 3:

k = 9223372036854775808# Python 2 only

bigint = 1L

# Python 2 and 3

from future.builtins import int

bigint = int(1)

统一整数除法

P2 的除法 / 符号实际上具有两个功能:

当两个操作数均为整型对象时,进行的是地板除(截除小数部分),返回整型对象;

当两个操作数存在至少一个浮点型对象时,进行的是真除(保留小数部分),返回浮点型对象。

P3 的除法 / 符号仅仅具有真除的功能,而地板除的功能则交由 // 来完成。

兼容技巧:# Python 2 only:

assert 2 / 3 == 0

# Python 2 and 3:

assert 2 // 3 == 0

“True division” (float division):# Python 3 only:

assert 3 / 2 == 1.5

# Python 2 and 3:

from __future__ import division    # (at top of module)

更多:python 字符串 r raw Python2 和 Python3 的区别及兼容技巧

https://www.002pc.comhttps://www.002pc.com/python/1254.html

你可能感兴趣的Python3,Python2,兼容,技巧,区别

No alive nodes found in your cluster

0踩

0 赞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx搭建文件服务器脚本,基于docker搭建nginx文件服务器的方法步骤

1.在本机新建配置文件docker_nginx.confserver {listen 7070;server_name localhost;charset utf-8;location /files {#在docker内nginx的目录alias /home/files;expires 1d;allow all;autoindex on;}2.启动命令docker run --name nginx -d -p 7070:7070 -v D:\dev\nginx-1.13.…

python运行不了指令_python不是内部命令或外部命令,也不是可执行程序解决方法...

简述 常见于新手初装python&#xff0c;然后忘记勾选设置环境变量(PATH)&#xff0c;或者没有重启&#xff0c;然后运行教程中的python命令时出现。 有两个解决方法&#xff1a;1.设置环境变量&#xff0c;然后重启。 2.新建命令。 如果你打算同时安装多个python版本&#xff0…

快手通过标签添加你什么意思_快快手粉丝数旁边的关注是什么意思手通过关注页添加是什么意思...

Aauto Speeter通过关注页面添加的内容意味着&#xff0c;如果你已经在关注遇到了其他人&#xff0c;并且他们对你感兴趣&#xff0c;他们将从这个关注页面添加关注&#xff0c;并成为你的粉丝。事实上&#xff0c;得到关注和粉丝并不是特别困难。如果主要发表的内容有意思&…

ovation系统服务器安装,Ovation系统介绍.ppt

Ovation系统介绍热控调试关于OVATION系统的一点简介;目录;Ovation系统的结构及硬件;典型的OVATION系统结构;Primary;网线插拔后需重启控制器&#xff0c;否则显示橙色&#xff0c;failmode报警;每扇门都有风扇;;I/0 子系统结构 ; I/O 模件; I/O 卡指示 ;模件种类减少&#xff0…

东京战纪服务器维护中,东京战纪7月21维护公告 当前测试进度介绍

东京战纪当前的测试进度已经有了很大的进步&#xff0c;接下来小编就跟大家一起看看测试期间对玩家给大家的报告吧。亲爱的喰种和CCG搜查官们7月19日中午12:00&#xff0c;我们怀着紧张又忐忑的心情开启了《东京战纪》官网限量删档技术测试。大家对《东京喰种》IP的热爱和对《东…

springboot能用python吗_Python与springboot的对接

使用springboot建立一个web demo ,其中有一个接口如下&#xff0c;为了测试加了一个参数 type: Autowired private JdbcTemplate jdbcTemplate; RequestMapping(value "/getCountry", method RequestMethod.GET) // ResponseBody public List> getUser(RequestB…

docker重启后容器消失_docker设置固定ip地址

代码来源:博客园 原文作者:雪之谷 原文链接:https://www.cnblogs.com/xuezhigu/p/8257129.html 本文版权归原作者所有,如有侵权请立即与我联系,我将及时处理。 背景: 我开发用的机器上边会启动几个容器,就因为保洁阿姨碰了一下我的插排,我的机器被断电关机了。 默认情况下…

模型稳定后放在服务器上,把工程放在服务器上

把工程放在服务器上 内容精选换一换获取方式&#xff1a;Ascend-mindx-msinstaller_{version}.zip&#xff1a;获取链接适用场景&#xff1a;在一台Linux服务器上使用msInstaller工具给本机安装开发或运行环境。在一台Linux服务器上使用msInstaller工具远程给昇腾AI设备安装开发…

洛阳地铁一号线无人驾驶_洛阳地铁洛阳造:智能化车厢、无人驾驶、加热座椅……...

大家好&#xff0c;印象妹又来给大家播报地铁的情况啦&#xff01;自从12月1日地铁1号线试运行启动&#xff0c;后台里经常有人私信印象妹&#xff0c;多讲讲咱大洛阳的地铁情况&#xff0c;下面&#xff0c;来咯&#xff01;身为洛阳人&#xff0c;我们都知道洛阳是中西部地区…

html计算器_学习HTML、CSS和JavaScript的最佳方法是什么?

与其他后端语言相比&#xff0c;HTML、CSS和JavaScript无论从阅读角度还是编写的角度来说都更加容易一点。所以新手在学习前端知识的时候不必有太大的心理压力 &#xff0c;心态摆正后&#xff0c;大部分人都可以将前端学好。下面聊聊Html、CSS、JavaScript的最佳学习方法&…

网站重新解析换服务器,更换解析服务器地址

更换解析服务器地址 内容精选换一换普通的域名解析只为用户返回解析记录&#xff0c;不会考虑访问者的来源&#xff0c;这样所有的访问者都被解析到相同的IP地址上&#xff0c;容易出现由跨运营商访问引起网络延迟。运营商线路解析是云解析服务提供的按运营商维度来区分访问者来…

git merge 回退_Git 基础学习总结2(学不会你锤我)

作者序&#xff1a;我在知乎上搜索了有关 Git 的学习文章&#xff0c;虽然点赞很多但我认为他们写得并不好&#xff0c;内容不够详尽&#xff0c;排版让人看得疲劳&#xff0c;所以我决定自己写几篇关于 Git 的学习文章。当别人提供的不好用就自己创造一个新的&#xff0c;这也…

azure的虚拟机怎么选_Windows Azure案例: 选虚拟机或云服务

01虚拟机和云服务随着云计算技术和市场的日渐成熟&#xff0c;企业在考虑IT管理和运维时的选择也更加多样化&#xff0c;应用也从传统部署方式&#xff0c;发展为私有云、公有云、和混合云等部署方式。作为微软核心的公有云平台&#xff0c;Windows Azure提供了三种计算模式(虚…

ajax加载进度百分比,在ajax中显示加载百分比的进度条,php

您好我正在使用ajax加载数据库内容。我想显示加载或图像的总百分比。在ajax中显示加载百分比的进度条&#xff0c;php这是我的脚本function name1(str){if (str.length0){document.getElementById("txtHint").innerHTML"";return;}if (window.XMLHttpReque…

python破解百度网盘提取码_Python 一键获取百度网盘提取码

该 GIF 图来自于官网&#xff0c;文末有给出链接。 描述 依托于百度网盘巨大的的云存储空间&#xff0c;绝大数人会习惯性的将一些资料什么的存储到上面&#xff0c;但是有的私密链接需要提取码&#xff0c;但是让每个想下载私密资源的人记住每一个提取码显然是不现实的。这个时…

assertpythonraise_使用assertRaise测试异常消息

我试图在一个条件引发自定义异常消息的函数内断言异常.功能&#xff1a;if not Cart.objects.filter(membermember).count():raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))现在,我能够成功地产生获得加注声明所…

vs12新建ajax,VS2012下WebService 的创建,部署和使用

WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成.第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择…

pythonsql注入_python使用mysql,sql注入问题

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #连接地址 port 3306, #端口 user root, #用户名 password , #密码 database db, #库名称 charset utf8 #编码格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #产生一个游标,…

h5优秀控件_H5前端学习的js插件大全,基本包含了大部分的前端最前沿的js插件和库。...

布局SuperEmbed.js - 是一个Javascript库&#xff0c;可检测出网页上的内嵌视频并使他们能够变成响应式元素。demoScrollReveal - ScrollReveal插件使用户能够无比轻松地创建桌面和移动浏览器的网页滚动动画。demoBricks.js - 是一款超快的用于固定宽度元素的“砖石”布局生成器…

js 控制鼠标_JS逆向 | 面向小白之eval混淆

所有文章首发在我的微信公众号“逆向新手”&#xff0c;更多逆向系列请关注公众号&#xff0c;谢谢&#xff01;声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff0…