歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 為什麼說 Python 4.0 不會像 Python 3.0 一樣

為什麼說 Python 4.0 不會像 Python 3.0 一樣

日期:2017/3/1 9:39:26   编辑:Linux編程

python-ideas的新手會在提議沒有為從目前合法的Python3代碼提供一個清晰的遷移路徑的向後兼容性改變時偶爾提到"Python 4000"的想法。畢竟,我們允許Python3.0不支持向後兼容,為什麼我們不能允許Python 4.0也這樣做呢?

我聽到了很多質疑(包括"你造成過一次向後兼容的嚴重破壞,我怎麼知道你不會再次破壞?"這樣的心聲),我想在此記錄我的回答,以便日後可以向人們提及。

目前對 Python 4.0 有哪些期待?

我目前的期待是 Python 4.0 僅是"Python 3.9 之後的另一個發行",僅此而已。沒有重大的語言改變,沒有重大向後兼容性的破壞——從 Python 3.9 到 4.0 的平滑過渡應和從 Python 3.3 到 3.4(或者是從 2.6 到 2.7)一樣。我甚至期待著穩定的應用二進制接口在過渡中可以保留。

以目前大概每十八個月的語言特性發行速度,我們將在2023年的一個時間見到 Python 4.0,而不是Python 3.10。

目前對 Python 4.0 有哪些期待?

我目前的期待是 Python 4.0 僅是"Python 3.9 之後的另一個發行",僅此而已。沒有重大的語言改變,沒有重大向後兼容性的破壞——從 Python 3.9 到 4.0 的平滑過渡應和從 Python 3.3 到 3.4(或者是從 2.6 到 2.7)一樣。我甚至期待著穩定的應用二進制接口在過渡中可以保留。

以目前大概每十八個月的語言特性發行速度,我們將在2023年的一個時間見到 Python 4.0,而不是Python 3.10。

從英語居多到全語言

Python3對向後兼容的破壞出乎意料也不值一提。在Python3中所有的向後兼容改變中,許多嚴重的遷移阻礙歸罪於PEP 3100的一個小著重號(●):

  • 所有的字符串均使用Unicode字符編碼,擁有一個單獨的bytes()類型。新字符串類型將命名為'str‘。

PEP3100 是Python3的改變被認為最沒有爭議的終點——沒有單獨的PEP必需考慮。這個特別的改變被認為是沒有爭議的原因是我們在Python2上的經驗表明web和GUI框架的作者們是對的:作為一個應用開發者敏感地處理Unicode意味著確保所有的文本數據從二進制盡可能的轉換到系統邊界,以文本來操作,再轉換為二進制輸出。

不幸的是,Python2沒有鼓勵開發者那樣寫程序——它大范圍地模糊了二進制數據和文本的界限,使開發者在頭腦中區分這兩者變得困難,更不用說他們的代碼。所以web和GUI框架作者必需告訴他們的Python2用戶"使用Unicode文本,否則會在處理Unicode文本輸入時因為晦澀和難以追蹤bugs受罪。"

Python3改進了這個問題:它在"二進制域"和"文本域"之間加入了強制分離,使編寫普通應用更加簡單,同時也使編寫工作在二進制和文本數據的區別不是那麼清晰的系統界限代碼時更加困難。關於Python2和Python3之間的文本模型改變的更多細節我寫在這裡。

Python的Unicode支持正在演進,這和計算文本操作從English-only的ASCII(1963年正式定義)開始,一路經過"二進制數據+編碼聲明"的復雜模式(包括二十世紀八十年末引進的C/POSIX locale和Windows code page系統)和Unicode標准的原始16位only版本(1991年發布),向相對廣泛的現代Unicode代碼點系統 (1996年定義,每幾年發布重大更新)遷移的大背景相悖。

為什麼提及這一點呢?因為這種“默認Unicode”的轉變是Python3最具破壞性的向後兼容性改變,不同於其他更多是語言特定的改變,它是文本數據呈現和操作更廣泛的行業改變的冰山一隅。隨著通過Python3過渡時語言特定問題的清除,比早期的Python更高的語言特性門檻和沒有其他從"二進制數據編碼"向文本模型當前使用的Unicode編碼這樣大規模的行業范圍遷移的轉變,讓我看不到會需要一個類似Python3的向後兼容性破壞和平行支持時期的改變到來。相反,我期待我們可以容納任何正常改變管理過程中的未來語言演進,任何不能以這種方式處理的提議都將被當做強加在社區和核心開發團隊上不可接受的高昂代價而被拒絕。

在我的個人博客上你也可以找到這篇文章:Why Python 4.0 won’t be like Python 3.0 | Curious Efficiency.

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved