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 定义变量的边界 非负…

政安晨:【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…

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

目录 前言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…

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

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

fastadmin框架后台列表固定第一行列表固定头部

在列表中&#xff0c;如果列表字段很多&#xff0c;并且每页数量很多&#xff0c;往下拉的时候就不好辨别数据是哪个字段的&#xff0c;对用户造成不好的浏览体验。 通过以下方法&#xff0c;可以实现将列表的第一行&#xff0c;也就是头部&#xff0c;固定在第一行显示&#…

14-62 剑和诗人36 - 混合专家 (MoE) 扩展 AI 视野

了解混合专家 (MoE) 混合专家 (MoE) 是一种机器学习技术&#xff0c;它将多个“专家”神经网络模型组合成一个更大的模型。MoE 的目标是通过组合专业专家&#xff08;每个专家专注于不同的子领域&#xff09;来提高 AI 系统的准确性和能力。 MoE 模型的一些关键特征&#xff1…

探索Kotlin:从K1到K2

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 嘿&#xff0c;小伙伴们&#xff01;今天我们来聊聊Kotlin&#xff0c;这个在安卓开发圈里越来越火的编程语言。…

苹果手机抹机(马来西亚)操作步骤

苹果手机抹机&#xff08;马来西亚&#xff09;操作步骤 操作环境操作步骤 操作环境 苹果6s&#xff0c;没有插卡&#xff0c;就连接上了一个wifi 操作步骤

错位情缘悬疑升级

✨&#x1f525;【错位情缘&#xff0c;悬疑升级&#xff01;关芝芝与黄牡丹的惊世婚约】&#x1f525;✨在这个迷雾重重的剧场&#xff0c;一场前所未有的错位大戏正悄然上演&#xff01;&#x1f440; 你没看错&#xff0c;昔日兄弟的前女友关芝芝&#xff0c;竟摇身一变成了…

FastAPI 学习之路(三十七)元数据和文档 URL

实现前的效果 那么如何实现呢&#xff0c;第一种方式如下&#xff1a; from routers.items import item_router from routers.users import user_router""" 自定义FastApi应用中的元数据配置Title&#xff1a;在 OpenAPI 和自动 API 文档用户界面中作为 API 的…

【SGX系列教程】(五)enclave多线程测试,以及EPC内存测试

文章目录 一. 概述二. 原理分析2.1 多线程在Enclave中的实现流程2.2 多线程和EPC内存分配之间的冲突2.3 解决多线程和EPC内存分配冲突的策略 三. 源码分析3.1 代码结构3.2 源码3.2.1 App文件夹3.2.2 Enclave文件夹3.2.3 Makefile 3.3 总结 四.感谢支持 一. 概述 在Intel SGX环境…

从零开始学习嵌入式----C语言框架梳理与后期规划

目录 一、环境搭建. 二、见解 三、C语言框架梳理 四、嵌入式学习规划流程图&#xff08;学习顺序可能有变&#xff09; 一、环境搭建. C语言是一门编程语言&#xff0c;在学习的时候要准备好环境。我个人比较喜欢用VS,具体怎么安装请百度。学习C语言的时候&#xff0c;切忌…