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