溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

更多人選擇python3的原因有哪些

發(fā)布時(shí)間:2020-09-10 16:33:05 來(lái)源:億速云 閱讀:150 作者:Leah 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)更多人選擇python3的原因有哪些,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

我初學(xué) python 的時(shí)候,對(duì)為什么要同時(shí)存在 python2 和 python3 感到非常疑惑,當(dāng)時(shí)覺(jué)得,不就是print不一樣嗎?不就是在編碼上有些不同嗎?何必搞得這么分裂呢?

知乎上有個(gè)問(wèn)答:Python 2 和 Python 3 有哪些主要區(qū)別? 看了一下,大部分回答都在羅列 “python2 和 python3 在語(yǔ)法和功能有哪些區(qū)別” 或者 “python3 相對(duì) python2,做了哪些改進(jìn)”。我不打算羅列這些 list,我嘗試來(lái)回答這個(gè)問(wèn)題:是什么原因,讓 python 社區(qū)做出了非 python3 不可的決定?

1 幾個(gè)重要的發(fā)展時(shí)間點(diǎn)

1968  ASCII標(biāo)準(zhǔn)發(fā)布

這個(gè)時(shí)期計(jì)算機(jī)幾乎都是 8 bits 的

numeric values (0 - 127)和字符一一對(duì)應(yīng),比如字符 ‘a(chǎn)’ 對(duì)應(yīng)的 numeric value  對(duì)應(yīng)

ASCII只是針對(duì)美國(guó)人的,這意味著無(wú)法支持其他語(yǔ)言體系。

Guido 于 1989年開(kāi)始開(kāi)發(fā) python 語(yǔ)言,于 1991 年二月份正式發(fā)布第一版

1991 年 8月份 unicode 標(biāo)準(zhǔn)發(fā)布

使用 16 bits,意味著能存放 65,536 個(gè)不同的字符

這也是目前使用最廣泛的編碼標(biāo)準(zhǔn)。

2004年 python 社區(qū)開(kāi)始籌劃 python3。

從這你就能看出關(guān)鍵的一點(diǎn):python 正式發(fā)布的時(shí)候 unicode 標(biāo)準(zhǔn)還沒(méi)有出現(xiàn) ,python 在后面的發(fā)展過(guò)程中,的確加上了對(duì) unicode 的支持,可這也只是一個(gè)可選的feature,不是強(qiáng)制性的!

2 python2 str 對(duì)象的不確定性

'abcd'

如果你是 python3 用戶(hù),你會(huì)說(shuō)這是一個(gè)包含了”a”, “b”, “c”, 和 “d” 的字符串。

如果你是 python2 用戶(hù),你可能會(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ò)!

03 哲學(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之蟬 里面有一句話:

There should be one— and preferably only one —obvious way to do it.

完成一件事,給開(kāi)發(fā)者太多的選擇并不就是好的,因?yàn)檫@可能會(huì)帶來(lái)溝通成本、選擇成本的增加,得不償失。

python核心開(kāi)發(fā)者 Brett Cannon 在他的一篇文章 Why Python 3 exists 中說(shuō):

And we made the change when we did because we figured the sooner the better.

the sooner the better ,一定要做的事越早越好。

不過(guò)他也說(shuō)了,python2 到 python3 這樣大的 “向后不兼容” 的改變之后應(yīng)該都不會(huì)再發(fā)生了,因?yàn)檫@的確對(duì)開(kāi)發(fā)者不友好。

4 總結(jié)一下

Python2 str 對(duì)象的模糊性,這種原子層面的模糊性是不可接受的。

Python2 unicode 只是可選項(xiàng),不是必選項(xiàng),可選意味著有人不選。Python3 開(kāi)始默認(rèn)支持 unicode。the sooner the better ,必做的事盡早做。

上述就是小編為大家分享的更多人選擇python3的原因了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI