怎么卸载python 旧版本_Python 如何移除旧的版本特性,如何迎接新的特性?

2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了。

Python 2.0 版本是在 2000 年发布的,至今正好到 20 周年(差半年),一代版本竟然持续了这么长时间。其中,2.7 版本是在 Python 3 推出后才发布的,它在 2010 年发布,至今已是 10 年之久。

事实上,Python 诞生了 30 年,但版本演进过程一直很慢,目前最新发布的版本只到 3.8.2。

对比一下相差几岁的隔壁家选手,C++ 已经发展到了 20,JAVA 发展到了 14 ,PHP 到了 7.4,差距悬殊。

但是,版本发布太频繁,也不总是一件好事。就在 Python 程序员抱怨自己的 Python 2 项目还没升 3 版本时,有些 JAVA 程序员还在维护 6、7 版本的项目呢。版本迁移之苦,大家彼此彼此,五十步笑百步。

编程语言跨版本间出现不兼容的特性,几乎是常态。很多时候,并不是说过去的设计是 bug,只是因为编程语言也是某种“生命体”,它会学习其它语言,也会自我进化,所以就有新陈代谢。

摆脱旧的不兼容性版本或者某些落后的设计,有时候需要挺漫长的过渡期。为了方便程序员迁移,核心开发者们形成了一些有效的惯例。

以 Python 为例,我知道有以下的几种策略:

1、DeprecationWarning 提示

当使用过期的类或方法时,会出现 DeprecationWarning 告警。

例如,从 collections 模块导入 ABC(Abstract Base Classes,即抽象基类)就是过期用法,会出现以下提示:DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working

从 3.3 版本起,正确的用法是from collections.abc import Iterable ,直到 3.9 版本时,会取消过期提示,出现报错。

2、将模块改名,约定为私有

在 Python 中,以单下划线“_”开头命名的变量,会被约定为私有的。如果在一个模块中定义了私有变量,理论上它就不该被导出到其它模块使用。

这种命名方式也被推广到了标准模块上。例如,在 Python 的极早期版本中有一个thread 模块,后来到 1.5.1 版本,以 thread 为基础又推出一个更方便好用的threading 模块,也就是我们熟知的实现多线程的模块。

为了摆脱/屏蔽旧的实现,Python 把 thread 模块重命名为_thread ,约定为私有的,这种方式很灵活,普通程序员不会感知它的存在,骨灰级程序员却可以用它实现更加低层的开发。

3、文档中作 deprecated 提示

它跟 DeprecationWarning 是同样的意思。之所以要单独列出来,是因为在构思本文时,我正巧在 Python 3.8 文档中发现了一则提示,忍不住分享一下。

文档中说: @asyncio.coroutine 装饰器不再支持基于yield from 生成器实现的协程,需要显式地写成“asyc def”这种定义方式。

这意味着,3.8 版本对该特性来说就是个分界线,它将进入一个平稳的淘汰周期。

以上三种方式可谓是“除旧”,是面向过去的版本所做的。与它们相对应,就少不了“迎新”的过程,要面向未来的版本。

Python 中有时候会在当前版本中加入一些实验性的特性,期待在未来版本中再完全地实现。而这,就需要给程序员们指出一些过渡性的提示。

例如,在《Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型》一文中,我就介绍了隐藏在 3.8 版本中的“vectorcall”协议,它要在 3.9 版本中才会真正地实现(而且不排除在未来还会继续扩展)。

此外,还有一个很著名的例子:3.2 版本中推出的 concurrent.futures 标准库(依据 PEP-3148)。

这是一个统合了多线程与多进程的异步开发库,“concurrent”指的是并发,而“并发”概念可以囊括多线程与多进程的实现方式。

为什么在“concurrent”下面要加一个“futures”呢?PEP-3148 中指出了这样命名的三点原因,其中最后一点是:希望在将来(in the future)能够添加和移动现有的跟并发相关的库到concurrent 库下面。

也就是说,3.2 版本的concurrent.futures 就是一种实验性的设计,它是为将来更好的concurrent 库而作的准备。虽然说将来的最终实现,可能跟 PEP 中设想的不同,但是,这种面向将来的长远考虑的设计思路,会给整个社区带来某种预期和共同的信念。

好了,聊了这么多,是时候收个尾了。

我从未真正开发或维护过 Python 2 的项目,所以在这个本应纪念它 EOL 的日子,所能想到的就是一个更具普遍性的“除旧迎新”的话题:旧的版本特性是如何逐步退出的,新的版本特性又是如何逐步加入的?

如果你喜欢这种风格的文章,欢迎搜索关注公众号“Python猫”。人生苦短,让我们一起用 Python!

推荐阅读:

1、Python 3.9 性能优化,更快的 list()、dict() 和 range() 等内置类型:https://mp.weixin.qq.com/s/bjQjVmf7dP5fOqCS1cObqQ

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

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

相关文章

如何在android模拟器中安装apk

1. 启动android模拟器 2. 将要安装的apk,拷贝在与adb.exe同文件夹中。我的路径:D:\android\android-sdk-windows\platform-tools 3. 在cmd中,进入上目录,输入adb install xxx.apk,最后可看见success 4. 回到android模拟…

android 本地图片分享,Android 把图片保存到本地相册

【实例简介】把图片保存到本地相册,实现本地相册资源同步化【实例截图】【核心代码】Scanner└── Scanner├── AndroidManifest.xml├── bin│ ├── AndroidManifest.xml│ ├── classes│ │ └── com│ │ └── housheng│ │ └── scanner│…

python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点

前言在《设计模式》一书中工厂模式提到了:工厂方法模式(Factory Method)抽象工厂模式 (Abstract Factory)但是在实际过程中还有一种工厂模式经常被使用,那就是 简单工厂模式(SimpleFactory)。有一种常见的分类的方法:根据产品是由具体产品还是…

LaTeX 的对参考文献的处理

LaTeX 的对参考文献的处理实在是非常的方便,我用过几次,有些体会,写出来供大家 参考。当然,自己的功力还不够深,有些地方问题一解决就罢手了,没有细究。LaTeX 对参考文献的处理有这么一些优点:1…

android 拦截外拨电话,Android拦截外拨电话程序示例

拦截监听外拨的电话,并进行处理:向外拨打电话时系统会发出一个有序广播,虽然该广播最终会被拔号器里的广播接收者所接收并实现电话拔打,但我们可以在广播传递给拔号广播接收者之前先得到该广播,然后清除传递给拔号广播接收者的电话号码&#…

linux下达梦数据库启动_linux上安装tomcat和达梦数据库

环境:系统:红帽linux企业版4(红旗LINUX也是一样,会更简单)jakarta-tomcat-5.0.28.tar.gz(二进制源码)jdk-1_5_0_15-linux-i586-rpm.bin(RPM包)达梦数据库目的:大部分政分机关,大型企事业单位都用LINUX作为服务器&#…

传感器系列之4.3流量传感器

4.3 流量数据采集实验 一、实验目的掌握水流量计的结构与工作原理掌握霍尔传感器的使用二、实验材料具有USB 串口通讯的PC 机1 台ADS1.2 集成开发软件1 套J-Link-ARM 仿真器及软件1 套NXP LPC2378 实验节点板1 个LCD 显示实验板1 个BMP085数字气压传感器模块1个三、实验原理流量…

鸿蒙日程管理若离,2020华为HDC日程确定,鸿蒙、HMS以及EMUI 11成最关注点

HDC:华为开发者大会,目前已经确定将在9月10日正式开幕。日前华为已经在其官网公布了HDC的日程,从现在的消息看华为开发者大会有三大点最受业内关注。鸿蒙操作系统鸿蒙操作系统应该是大家关注最大的话题,不过此前余承东已经正式表示…

python打印二进制内容_在python中打印出c类型的二进制表示

您可以使用切片(或str.rstrip),int和format的组合.>>> inp 0x0202020202UL>>> format(int(inp[:-2], 16), b)1000000010000000100000001000000010# Using str.rstrip, This will work for any hex, not just UL>>> format(int(inp.rstrip(UL), 16)…

vi - a linux command

创建一个文件的linux命令,参考格式如下—— vi hello.txt 保存或退出命令的操作——按ESC键 跳到命令模式,然后::w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件…

语言课设医院诊疗系统_江苏孤独症孩子有哪些典型特征?上海六一儿童医院

孤独症孩子有哪些典型特征当家长发现孩子不爱说话,不理人的时候,有时怀疑孩子是不是患了孤独症。对于孤独症的孩子和正常的孩子还是不一样的。那么,孤独症孩子有哪些典型的特征呢?孤独症孩子的典型特征主要有以下几点:特征一&…

不一样 使用别名 数据字段和bean_Mybatis-resultMap标签详解

是Maybatis的结果集封装,搭配等标签的resultMap属性使用属性:id:该封装规则的唯一标识type:封装出来的类型,可以是jdk自带的,比如Map,应该可以是自定义的,比如EmployeeautoMapping:自动封装,如果…

android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点

原标题:提升用户体验 可升Android 6.0机型盘点【手机中国 导购】2009年Android系统正式发布,由此加速手机走向智能化进度。如今,随着Android系统日渐成熟,众多手机厂商都在此基础上研发出符合自家特色的系统版本,并且流…

MariaDB exists 学习

MariaDB exists 学习 exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如…

antd 能自适应吗_一种能自适应识别母线运行方式的备自投装置应用探讨

中山供电局的研究人员江清楷,在2019年第8期《电气技术》杂志上撰文,介绍了一种220kV备自投装置,列出了母联备自投和线路备自投的充电条件及起动条件。以220kV逸仙变电站为例,指出该备自投装置在双母线单分段接线的变电站应用中存在…

python抓取html中特定的数据库,Python抓取网页中内容,正则分析后存入mysql数据库...

firefoxhttpfox可以查看post表单首先在http://www.renren.com/这个地址输入用户名和密码,输入用户名和密码之后post到下面这个网址:http://www.renren.com/PLogin.do#renren.pyimport urllibimport urllib2import cookielibcookie cookielib.CookieJar(…

第二次团队冲刺--9

昨天:数据库的输出。今天:数据库的输出。遇到的问题:数据库里数据的输出问题。转载于:https://www.cnblogs.com/chenpengmeng/p/5559542.html

html页面tableview,用JS写的一个TableView控件代码

请看看编码是否规范,使用是否方便HTML:代码编号姓名{value}{value}编号名称{value}{value}Javascript:代码//class TableView {//构造函数function TableView(ID){var htmlTable document.getElementById(ID);this.container htmlTable.getElementsByTagName(&quo…

a4988 脉宽要求_A4982/A4984/A4985和A4988设备主要针对办公室自动化市场

随着社会的发展,在工作中,办公室的自动化需求加大,这就需要有各种办公室自动化设备的支持。Allegro MicroSystems公司宣布扩展其微步电动机驱动器系列,该系列共包含可减少外置元件和利用简单STEP(步进)和Direction(方向)接口的四款…

HTML中空格代码为,html空格 html 空格代码

html 空格和html空格代码篇在HTML网页排版机关时,一个翰墨与翰墨间空格可使用一个使用空格键直接空一格便可。然则要实现多个空格间隔,打再多空格键空格,始终至多展现一个空格地位。那末如何才智html构造中笔墨间完成多个空格成果&#xff1f…