簡介
Python 最初是作為 Python version2 開始的,也稱為「Legacy Edition」。 Python2 的最後一個版本是 Python2.7,於 2020 年停止使用。 Python 3.x 是作為替代品引入的,與 Python 2.x 版本相比,進行了大量改進和錯誤修復。較舊的舊版 Python 是 LTS 軟體,這意味著它擁有長期支援。然而,Python 3.x 版本是向後不相容的版本,這使得將 Python 2 程式碼庫升級到 Python 3 非常有必要,以充分享受 Python 3 的易用性和支援。開發人員升級到 Python 3 的最大原因可以列舉a) 開發人員生產力(因為它是動態類型的,非常容易學習和編寫程式碼)和 b) 效能改進,包括在大多數任務中更快的效能。
更新到Python3的方法
用 Python 3 重寫程式碼庫
使用移植過程
#方法一:重寫整個程式碼庫
這種升級程式碼庫的方法僅在小規模建立軟體時才有用。這是因為任何升級程式碼庫的人都需要對整個程式碼庫的工作方式有一個總體了解。用Python 3重寫程式碼可以幫助實現Python 3的功能和易用性,從而可以縮短程式碼並提高效率。此外,如果使用其他方法遷移程式碼庫,則在遷移整個程式碼庫之前,實作 Python 3.x 功能可能會出現問題。重寫程式碼庫解決了這個問題,也讓我們有機會升級我們長期以來想要做的任何程式碼區塊。
但是,此方法僅在程式碼庫具有較小的可擴展大小時才有效。
方法 2:使用移植過程
另一方面,我們可以使用文件中官方描述的Python移植過程。從較高的層面來看,這種移植是一個三步驟過程 -
自動轉換
手動更改
運行時驗證和修復
#但是,所有這一切的先決條件是首先安裝 Python 3 及其相關的套件和程式庫。讓我們看看 Windows 的流程。
下載並安裝 -
https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe這將安裝 Python 軟體。之後,可以使用官方的 Python 2 到 Python 3 移植模組或軟體(例如 2to3 等)開始移植過程。這會將程式碼移植到 Python 3 中,但必須注意以下問題 -
更新Setup.py 檔案以表示Python3 相容性
安裝檔案中的分類器必須更新為包含程式語言 :: Python :: 3 。這將只允許 Python 3 或其某些版本存在於編碼環境中(特定版本分類器也可用),從而防止不必要地回溯到 Python 2 程式碼。這將極大地幫助維護程式碼完整性,並允許整個程式碼庫僅存在於 Python 3 中。
使用現代化或未來化腳本
由於 Python 3 不向後相容,因此程式碼庫中的所有腳本都必須升級到 Python 3 標準。在這裡,我們可以在每個需要升級的模組的開頭使用 Modernize 或 Futurize 等腳本。並非所有 Python 功能都會在模組中使用,但必須對一些基本功能進行現代化改造,以確保任何模組的順利運作。因此,為了安全起見,Python 官方文件建議添加以下程式碼 -
from __future__ import absolute_import from __future__ import division from __future__ import print_function
這確保了我們目前的程式碼不會因為一些基本的依賴關係而在 Python 3 下退化並停止運作。然而,更好的方法是使用 Pylink 項目,其中的 --py3k 標誌有助於指出我們的程式碼偏離 Python 3 相容性的情況。這可以防止在每個區塊的開頭單獨執行 Modernize 或 Futurize 腳本,從而縮短程式碼並減少錯誤,儘管需要注意的是 Pylint 僅支援 Python 3.4 或更高版本。
導入時使用功能偵測以確保版本相容性
在某些情況下,Python 2 程式碼庫可能包含無法在 Python 3 中執行的模組。透過使用功能檢測,我們可以了解先前的專案是否支援 Python 3 版本。使用功能檢測而不是版本檢測來檢查我們需要使用的正確版本是一種更安全的方法,這將防止將來出現更多問題。
try: from importlib import abc except ImportError: from importlib2 import abc
比較二進位和文字資料時進行檢查
在Python 3中,文字和二進位資料類型不能公然混合,因為這會導致錯誤。但此檢查無法使用任何其他Python 庫自動執行,因此最好運行自定義代碼塊來比較基於字符串和二進制的數據,原因是Python 3 bytes 的行為方式不同就像舊版Python 中的舊str 一樣。
具有良好的測試覆蓋率
擁有良好的測試覆蓋率對於防止錯誤非常重要,並且透過僅更改需要的地方來縮短升級程式碼所需的時間。 Coverage.py 等工具在這種情況下會發揮很大作用,透過找出執行的內容和錯誤之間的差異來找出確切位置的錯誤。
結論
在這裡,我們了解了將大型軟體程式碼庫從 Python 2 遷移到 Python 3 的一些方法,以及我們應該注意的一些限制和一些可以使用的有用方法。但是,該過程可能會在一定程度上有所不同,具體取決於所考慮的程式碼庫以及專案中使用的程式庫和模組。這些一般步驟確實可以以整體良好的方式將大多數程式碼庫轉換為 Python 3 並使 Python 程式碼現代化。
以上是如何將一個大型的Python 2程式碼庫更新到Python 3?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)績效 - 臨界雜貨:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

在Python中,可以使用for循環、enumerate和列表推導式遍歷列表;在Java中,可以使用傳統for循環和增強for循環遍歷數組。 1.Python列表遍歷方法包括:for循環、enumerate和列表推導式。 2.Java數組遍歷方法包括:傳統for循環和增強for循環。

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!