2016-06-11 47 views
0

刪除,我們可以看到,爲什麼類型的Unicode如果我們比較的類型<code>bytes</code>,在Python版本2和3 <code>str</code>和<code>unicode</code>從巨蟒-3

  • 類型bytes可以在同樣的使用辦法。
  • 類型str從一種別名改變它的含義爲bytes到編碼的Unicode字符串(替換爲前unicode型)
  • 類型unicode僅在蟒2中使用,而在Python 3則有利於除去這應該是與Python 2和Python的最困難的任務3一種相容性的str

當寫代碼重新定義的意思是讓unicode字符串的處理權,因爲沒有類型的兩個版本的作品。另一方面,處理字節數組很微不足道,因爲在這兩個版本中都有一個bytes類型。

據我所知,在Python 3中引入unicode作爲str的別名很容易。這樣,開發人員可以在兩個版本中使用明確的類型名稱。一旦不再需要Python 2的兼容性,重構unicodestr將會很簡單。

這裏的問題不是解決問題的最佳方法。我在尋找的是爲什麼類型unicode不得不消失的解釋。

+3

因爲它從來不應該存在於第一位。 Python 3000正在解決錯誤。 –

+0

字符串的'u'''前綴也被重新引入。就我所知,甚至連compat libs(未來,六)都重新引入了「unicode」。 –

+1

是的,並不是每個人都相信增加它是一個更好的變化。 –

回答

1
  1. 伊格納西奧巴斯克斯 - 艾布拉姆斯已經給你基本的答案,你說這樣的問題:

    問:「......爲什麼類型的Unicode不得不消失」?

    答:「因爲它從來不應該存在,Python 3000是/正在修復錯誤。」

  2. 韋恩沃納闡述:

    答:「?在U前綴只是在Python 3一個空操作 - 它可以幫助人們編寫應用程序的2/3始終使用unicode誰反對該」

  3. 這引出了一個問題:「問:爲什麼你是你想要編寫‘代碼的‘Python 2和Python 3之間兼容’’反正???這是不是一件合理的事一定要做。Python 2和Python 3的之間的不兼容是任意 - 他們故意特別關於「統一」

  4. 這裏是吉多·範羅蘇姆的理由完全重新思考「的Unicode」!對於Python 3:

  5. 這裏是你應該如何處理Unicode的 - 任何新的,Python 3中。0只代碼 - 前進:

我希望幫助!

+0

3.因爲有充分理由爲第三方插件和用戶提供平穩過渡期,並且沒有理由故意爲他們製造障礙。無異議混合數據和文本是一件好事。但是這並不能解釋爲什麼在兩個版本中都沒有一致的類型(不管這個類型的名字是什麼)。 –

+1

如果你想要你的客戶做的事情,你應該真的提供*兩個版本的每個插件:一個用於Python2,另一個用於Python3。這就像試圖銷售一種混合汽車燃料 - 一種可用於燃氣汽車以及柴油發動機的燃料。只是不要這樣做。恕我直言...... – paulsm4

+1

PS:一篇關於Python2與Python3爭論的有趣文章:[The Gravity of Python 2](http://blog.startifact.com/posts/python-2-gravity.html) – paulsm4

相關問題