Python: 从 2.7 升级到 3,我比 vue 慢了一点点

小破站搜索云前端,查看视频版

89313ca528d6a706a6a73ae81bfd6211.jpeg

2024 年 7 月 7 日,据一位长期的Python观察者爆料,Fedora 41 系统最终将停止支持 Python 2.7。这是Python 2系列的最后一个版本,Python 2.7在Fedora Linux 41中将被退役且不再替代。除了PyPy之外,Fedora 41及以后的版本将不再包含Python 2,对于依赖于python2.7的包,在运行时或构建时需要处理这个退役问题,否则它们也将被退役。GIMP 3 也将在Fedora 41中推出,以去除任何剩余的Python 2依赖。

Vue

有趣的是,对比于前端开发领域流行的开发工具 vue.js,其版本 2 向版本 3 的演进也拖延了很久的时间。并且巧合的是,同样是 2.7 的版本,也是vue 2.x中最后一个稳定版本。不同的是vue3之于vue2采用了高度兼容的升级方式,而非python3那样断崖式的不兼容升级。

Vue 2 达到生命周期终点的时间是 2023 年 12 月 31 日,之后 Vue 2 将不再接收新功能、更新或修复,但仍然可以在现有的分发渠道中获取。虽然应用程序将继续运行,但包管理器会发出警告,提醒 Vue 2 已经不再是支持的版本。

我们之前曾制作过一期视频(小破站搜 BV1BP4y1t7Xz),揭秘了 Vue 版本系列中那些有趣的版本命名方式,一些重要版本大多以动漫、科幻电影等命名。在 2.x 最后一个大版本,也是专注于帮助开发者从 v2 迁移到 v3 的 vue2.7 中,Vue 2.7.0 仍遵循以上传统以 "Naruto(火影忍者)" 为代号,而 2023 年平安夜发布的 v2.7.16 的代号则是 Swan Song (绝唱),明确了 v2.x 从此达到 End Of Life(EOL)状态的含义。对于无法立即迁移到 Vue 3 的用户,Vue 官方也与第三方合作提供了 Never-Ending Support -- 即使在 EOL 之后也能继续获得 Vue 2 的更新和安全补丁。

Python

回到 Python 2 的告别,其生命周期原本预计在2015年结束,但后来延长到了2020年。Python维护者宣布,由于RHEL 7的维护结束和RHEL 8中Python 2.7应用的退役,他们将不再定期为Python 2.7回传安全修复到RHEL。尽管如此,这个过时的包在超出其退役日期五年后仍被提供,并将持续提供直到Fedora 40的生命周期结束。除了少数最后的修复工作外,将不再进行更新和维护,这意味着“Python 2将不再接受新的bug报告、修复或更改,且不再受支持”。

关于Python 2到Python 3的迁移,尽管Python 3在过去几年里已成为主流版本,但许多公司仍未完成过渡,仍然使用Python 2。他们普遍认为,Python 2到Python 3的迁移并不容易。特别是对于拥有庞大代码库、复杂逻辑和繁重决策过程的公司,代码兼容性问题、生态系统的碎片化、venv虚拟环境增加了复杂度等,都带来了新旧并存的困扰。在某些场景下,开发者可能需要同时维护Python 2和Python 3的代码,这不仅增加了维护成本,也使得代码管理和版本控制变得更加复杂。

然而不迁移到 Python 3 也要承受各种风险。其一是安全性 -- 随着 Python 2 官方 EOL,将不再有安全更新,这可能导致安全漏洞无人修复,使运行Python 2的系统处于严重风险之中。此外,Python 2 的退役也可能影响吸引新人才和经验丰富的开发人员,因为 Python 在开发者中越来越受欢迎,他们当然倾向于学习新的Python 3版本,而非退休的、不受支持的 Python 2。

尽管如此,Python 3的改进和新特性,如 Unicode 支持、更清晰的语法、性能提升以及对现代编程实践的更好支持、更好的常见习语和模式表达、并发性、故障处理、测试和调试的改进,以及计算速度的大幅提高和其它优化,最终还是证明升级是值得的。随着时间的推移,Python 3完全取代Python 2也只是早晚问题,你可以使用"from future import"等语法编写Python 3友好的代码,一些工具库如Six库提供了用于平滑Python 2和3之间差异的实用函数也为升级提供了便利。

Python 3逐渐成为主流,大部分库和框架都完成了迁移,开发者也逐渐适应了新版本。现在,Python 3的广泛采用和Python 2的退役,标志着Python社区向前迈进了一大步。

Spring Boot

其实版本 2.7 的升级魔咒还不止让 Python 和 Vue 碰到过,比如国内但凡提起微服务架构,可能十个程序员里有九个会立马想起 Spring Boot 来。这个 Java 框架的设计目标是简化 Spring 应用的初始搭建以及开发过程。Spring Boot 提供了约定优于配置(Convention over Configuration)的机制,让开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 几乎成为了企业级应用开发的标配。

于 2022 年 11 月正式发布的 Spring Boot 3.0 带来了多项重要的更新和改进,包括对Java 17的强制支持、Spring Framework 6的集成、模块化增强、Web框架更新以及数据库访问技术的革新。这些变化促使开发者考虑将现有项目升级,以充分利用新版本带来的优势。在开发者社区中,3.0 的升级当然也引起了广泛关注和期待。不过,升级过程也面临挑战,一些开发者出于开发习惯,或是遗留项目的维护难度、公司组织规定等,表示 JDK8 或 JDK11 不能动就是不能动。

总结

相比之下,Vue.js 和 Spring Boot 从 2.x 到 3.x 的升级,虽然也涉及到一些重大的改变和新特性,但它们的升级路径通常提供了较为明确的迁移指南,且社区和框架本身提供了较多的支持工具,如迁移助手和详细的文档,来帮助开发者平滑过渡。Vue 和 Spring Boot 的升级更多的是对现有特性的增强和对新技术栈的采纳,如 Vue 3 中对 Composition API 的支持,Spring Boot 3 对 Java 17 和 Jakarta EE 的支持,这些升级虽然也需要开发者投入时间和精力进行代码迁移,但总体上争议和阻力小于 Python 2 到 3 的升级。

总之,太阳底下无新事,前端、后端、语言、框架,寰球共此凉热,除了版本上的巧合因素,大致也有一些规律蕴含其中。1.x 版本青涩烂漫肆意挥洒,2.x 版本成熟稳定满身负担,3.x 版本百尺竿头更进一步;你在迁移代码,却逐渐看清了自己。

c46517b5de7320e7d4feb14366d7ad45.png

662aa1cdb729788cb2f462fad5a960b3.png

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

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

相关文章

利用【Python】【线性规划】优化工厂生产:实现智能资源配置与利润最大化的现代解决方案

目录 1. 问题背景和描述 1.1 问题背景 1.2 问题描述 2. 数学模型的建立 2.1决策变量 2.2 目标函数 2.3 约束条件 2.4 数学模型总结 3. 使用Python解决线性规划问题 3.1 导入必要的库 3.2 定义目标函数系数 3.3 定义不等式约束矩阵和向量 3.4 定义变量的边界 非负…

浅谈 Webpack5 模块联邦

概念 Webpack 模块联邦是一种先进的代码共享技术,它允许在多个独立构建的 Web 应用程序之间共享代码,而无需将这些代码提前发布到 npm 仓库或其他中央存储。 这项技术特别适用于微前端架构,因为它能让各个前端团队独立开发、部署自己的应用…

政安晨:【Keras机器学习示例演绎】(五十二)—— 使用门控残差和变量选择网络进行分类

目录 简介 数据集 安装准备 数据准备 定义数据集元数据 创建用于训练和评估的 tf.data.Dataset 创建模型输入 对输入特征进行编码 实施门控线性单元 实施门控余留网络 实施变量选择网络 创建门控残差和变量选择网络模型 编译、训练和评估模型 政安晨的个人主页&am…

OpenCV和PIL进行前景提取

摘要 在图像处理和分析中,前景提取是一项关键技术,尤其是在计算机视觉和模式识别领域。本文介绍了一种结合OpenCV和PIL库的方法,实现在批量处理图像时有效提取前景并保留原始图像的EXIF数据。具体步骤包括从指定文件夹中读取图像&#xff0c…

【链表】- 环形链表 II

1. 对应力扣题目连接 环形链表 II 2. 实现思路 a. 链表图示: b. 检测链表中是否存在环,即:会相交 思路: 使用 Floyd 的龟兔赛跑算法(Floyd’s Tortoise and Hare algorithm),即快慢指针法&…

二分法求函数的零点 信友队

题目ID&#xff1a;15713 必做题 100分 时间限制: 1000ms 空间限制: 65536kB 题目描述 有函数&#xff1a;f(x) 已知f(1.5) > 0&#xff0c;f(2.4) < 0 且方程 f(x) 0 在区间 [1.5,2.4] 有且只有一个根&#xff0c;请用二分法求出该根。 输入格式 &#xff08;无…

Mysql查询近半年每个月有多少天

Mysql 查询近6个月每个月有多少天&#xff1a; SELECT DATE_FORMAT(DATE_ADD(NOW(),INTERVAL-(CAST( help_topic_id AS SIGNED INTEGER )) MONTH ), %Y-%m) as months,DAY(LAST_DAY(CONCAT(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL-(CAST( help_topic_id AS SIGNED INTEGER )) MO…

【区块链+跨境服务】跨境出口电商溯源 | FISCO BCOS应用案例

当前跨境出口电商已成为带动我国外贸发展的中坚力量&#xff0c;尤其疫情特殊时期&#xff0c;成为推动经济增长的一个重要组成 部分。但是跨境出口电商流程长、环节多&#xff0c;且需辗转于不同的服务商以及国家之间&#xff0c;监管与定位也相对困难&#xff0c;容 易出现诸…

两段序列帧动画播放,在ios机型上出现闪屏

使用场景&#xff1a;两段序列帧动画连接播放&#xff0c;先播放第一段播一次&#xff0c;再播放第二段&#xff0c;第二段循环播放&#xff0c;在ios机型上出现动画闪动&#xff0c;播放不正常。 错误的写法&#xff1a;把每一段序列帧动画单独写在了定义的动画里 .gacha-bg…

开源软件项目的发展趋势与参与经验

目录 前言1. 开源项目的发展现状1.1 开源项目的快速增长1.2 企业对开源项目的重视 2. 开源社区的活跃度2.1 开源社区的多样性2.2 社区活动的丰富性 3. 开源项目在技术创新中的作用3.1 促进技术的快速迭代3.2 提供灵活的解决方案 4. 参与开源项目的经验和收获4.1 如何选择开源项…

从0-1搭建一个web项目(页面布局详解)详解

本章分析页面布局详解详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等功能。感兴趣的小伙伴可以访问源码点个赞 地…

【系统架构设计师】九、软件工程(软件开发生命周期|McCabe度量法|系统转换|系统维护|净室软件工程|基于构件的软件工程)

目录 九、软件开发生命周期和工具 十、McCabe度量法 十一、系统转换 11.1 遗留系统 11.2 系统转换 11.3 系统维护 十二、净室软件工程 十三、基于构件的软件工程 13.1 构件特征 13.2 构件模型要素 13.3 CBSE过程 13.4 构件组装 相关推荐 历年真题练习 九、软件开…

DOM 基本操作 - 事件基础

theme: smartblue 一、事件概述 JavaScript使我们有能力创建动态页面&#xff0c;而事件是可以被JavaScript侦测到的行为。 简单理解: 触发---响应机制。 网页中的每个元素都可以产生某些可以触发JavaScript的事件&#xff0c;例如&#xff0c;我们可以在用户点击某按钮时产生一…

libvirt qemu添加新类型磁盘格式

目录 前言 1 qemu部分 1.1 磁盘格式驱动创建 1.2 json文件创建数据结构对象&#xff1a; 2 libvirt部分&#xff1a; 2.1 对应关系设置 2.2参设向指令格式转换 前言 qemu中有很多虚拟机磁盘格式&#xff0c;比如较为熟悉的qcow2&#xff0c;luks&#xff0c;r…

C语言文件操作技术详解

C语言提供了一套强大的文件操作API&#xff0c;允许开发者进行文件读写、访问和管理。本文将深入探讨C语言文件操作的背后的技术&#xff0c;包括基本文件操作、文件读写以及文件权限和属性。我们将通过详细的解释和实用的代码案例来展示如何有效地使用这些技术。 第一部分&am…

C++ //练习 14.52 在下面的加法表达式中分别选用了哪个operator+?列出候选函数、可行函数及为每个可行函数的实参执行的类型转换:

C Primer&#xff08;第5版&#xff09; 练习 14.52 练习 14.52 在下面的加法表达式中分别选用了哪个operator&#xff1f;列出候选函数、可行函数及为每个可行函数的实参执行的类型转换&#xff1a; struct LongDouble{//用于演示的成员opeartor&#xff1b;在通常情况下是个…

自动驾驶技术的原理

自动驾驶汽车利用视觉识别功能来感知周围环境并做出驾驶决策。以下是自动驾驶汽车如何利用视觉识别功能及其原理的详细说明&#xff1a; ### 视觉识别在自动驾驶中的应用 1. **目标检测&#xff08;Object Detection&#xff09;**&#xff1a;识别并定位道路上的其他车辆、行人…

【安全设备】EDR

一、什么是EDR EDR即集检测、防御、运维功能于一体的主机安全及管理系统。EDR是一款集成了丰富的系统加固与防护、网络加固与防护等功能的主机安全产品。 二、EDR的部署模式 EDR&#xff08;Endpoint Detection and Response&#xff0c;端点检测和响应&#xff09;的部署方…

开源项目编译harbor arm架构的包 —— 筑梦之路

GitHub - amy5200/harbor-arm64 先做个记录&#xff0c;空了再验证

矩阵分解及其在机器学习中的应用

阵分解是一种广泛应用于数据挖掘和机器学习领域的技术&#xff0c;它通过将一个高维数据集分解为多个低维的数据集&#xff0c;以降低数据的复杂性、提高计算效率&#xff0c;并发现数据中的隐含结构。本文将详细介绍矩阵分解的基本概念、主要方法及其在机器学习中的应用。 一、…