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.pswp.cn/diannao/44706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44706.shtml
英文地址,請注明出處:http://en.pswp.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;并發現數據中的隱含結構。本文將詳細介紹矩陣分解的基本概念、主要方法及其在機器學習中的應用。 一、…