python2str對象的不確定性
'abcd'
如果你是python3用戶,你會說這是一個包含了”a”,“b”,“c”,和“d”的字符串。
如果你是python2用戶,你可能會說這是一個包含了”a”,“b”,“c”,和“d”的字符串,也可能會說這是表示97,98,99,和100的bytes。
這意味著你得足夠細心,明確自己的str對象到底是文本還是bytes,不然就可能會在你的代碼里面埋下bug。
沒錯,只要你是一個足夠細心,真正“合格”的程序員,這些問題都有解決方案。但是!這樣的假設是不切實際的,程序員是人,是人就意味著一定會犯錯!
哲學層面的考量
設計任何一個面向所有人的系統(tǒng),原子層面的設計都要及其小心細致。
數(shù)據(jù)類型是一門編程語言最最最基礎的構成,從哲學層面來講,構建一座大廈的原子出現(xiàn)這種不確定性是讓人無法接受的!
Python之蟬里面有一句話:
Thereshouldbeone—andpreferablyonlyone—obviouswaytodoit.
完成一件事,給開發(fā)者太多的選擇并不就是好的,因為這可能會帶來溝通成本、選擇成本的增加,得不償失。
python核心開發(fā)者BrettCannon在他的一篇文章WhyPython3exists中說:
Andwemadethechangewhenwedidbecausewefiguredthesoonerthebetter.
thesoonerthebetter,一定要做的事越早越好。
不過他也說了,python2到python3這樣大的“向后不兼容”的改變之后應該都不會再發(fā)生了,因為這的確對開發(fā)者不友好。
總結(jié)一下
Python2str對象的模糊性,這種原子層面的模糊性是不可接受的。
Python2unicode只是可選項,不是必選項,可選意味著有人不選。Python3開始默認支持unicode。
thesoonerthebetter,必做的事盡早做。
以上內(nèi)容為大家介紹了為什么使用python3,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。