您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關更多人選擇python3的原因有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
我初學 python 的時候,對為什么要同時存在 python2 和 python3 感到非常疑惑,當時覺得,不就是print不一樣嗎?不就是在編碼上有些不同嗎?何必搞得這么分裂呢?
知乎上有個問答:Python 2 和 Python 3 有哪些主要區別? 看了一下,大部分回答都在羅列 “python2 和 python3 在語法和功能有哪些區別” 或者 “python3 相對 python2,做了哪些改進”。我不打算羅列這些 list,我嘗試來回答這個問題:是什么原因,讓 python 社區做出了非 python3 不可的決定?
1 幾個重要的發展時間點
1968 ASCII標準發布
這個時期計算機幾乎都是 8 bits 的
numeric values (0 - 127)和字符一一對應,比如字符 ‘a’ 對應的 numeric value 對應
ASCII只是針對美國人的,這意味著無法支持其他語言體系。
Guido 于 1989年開始開發 python 語言,于 1991 年二月份正式發布第一版
1991 年 8月份 unicode 標準發布
使用 16 bits,意味著能存放 65,536 個不同的字符
這也是目前使用最廣泛的編碼標準。
2004年 python 社區開始籌劃 python3。
從這你就能看出關鍵的一點:python 正式發布的時候 unicode 標準還沒有出現 ,python 在后面的發展過程中,的確加上了對 unicode 的支持,可這也只是一個可選的feature,不是強制性的!
2 python2 str 對象的不確定性
'abcd'
如果你是 python3 用戶,你會說這是一個包含了”a”, “b”, “c”, 和 “d” 的字符串。
如果你是 python2 用戶,你可能會說這是一個包含了”a”, “b”, “c”, 和 “d” 的字符串,也可能會說這是表示 97, 98, 99, 和 100 的 bytes。
這意味著你得足夠細心,明確自己的 str 對象到底是文本還是 bytes ,不然就可能會在你的代碼里面埋下 bug。
沒錯,只要你是一個足夠細心,真正 “合格” 的程序員,這些問題都有解決方案。但是!這樣的假設是不切實際的,程序員是人,是人就意味著一定會犯錯!
03 哲學層面的考量
設計任何一個面向所有人的系統,原子層面的設計都要及其小心細致。
數據類型是一門編程語言最最最基礎的構成,從哲學層面來講,構建一座大廈的原子出現這種不確定性是讓人無法接受的!
Python之蟬 里面有一句話:
There should be one— and preferably only one —obvious way to do it.
完成一件事,給開發者太多的選擇并不就是好的,因為這可能會帶來溝通成本、選擇成本的增加,得不償失。
python核心開發者 Brett Cannon 在他的一篇文章 Why Python 3 exists 中說:
And we made the change when we did because we figured the sooner the better.
the sooner the better ,一定要做的事越早越好。
不過他也說了,python2 到 python3 這樣大的 “向后不兼容” 的改變之后應該都不會再發生了,因為這的確對開發者不友好。
4 總結一下
Python2 str 對象的模糊性,這種原子層面的模糊性是不可接受的。
Python2 unicode 只是可選項,不是必選項,可選意味著有人不選。Python3 開始默認支持 unicode。the sooner the better ,必做的事盡早做。
上述就是小編為大家分享的更多人選擇python3的原因了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。