最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

python2與python3有什么區(qū)別?

2022-09-03 10:43 作者:六星源課堂  | 我要投稿

最近有讀者在python項(xiàng)目中拿到的項(xiàng)目代碼是python2的代碼,但是當(dāng)前做項(xiàng)目基本上都是基于python3做的,所以在給python2的代碼增加一些新功能或者做代碼功能迭代的時(shí)候會(huì)經(jīng)常出現(xiàn)報(bào)錯(cuò)。今天我們就來(lái)對(duì)比說(shuō)一下,python2與python3兩個(gè)大版本之間有哪些常見(jiàn)的不同?



第一:維護(hù)及版本更新不同

官方通知python2 2020開(kāi)始已不再維護(hù),python3的版本還在不斷迭代更新,目前已經(jīng)更新到了python3.11版本。

第二:兩個(gè)版本所使用的編碼不同

python2使用的是ASCII編碼,如果想要支持中文的話(huà),需要更改一下字符集,添加coding:utf-8 ;

python3使用的是utf-8編碼,是支持中文的。

第三:?語(yǔ)法上發(fā)生變化
1)python3在不等于的寫(xiě)法上去除了<>,全部改用!= ;
2)整型除法運(yùn)算‘/’python2返回的是整數(shù),python3整型除法返回的是浮點(diǎn)數(shù),python3中除法返回整數(shù)使用//(整除);
3)python3中加入了nonlocal聲明。使用noclocal x可以聲明該函數(shù)上部層級(jí)中的變量;
4)python3中去除了print語(yǔ)句,使用print()函數(shù)替代使用。還有 exec語(yǔ)句也被exec()函數(shù)替代;
5)python3中輸入函數(shù)改變了(讀取鍵盤(pán)輸入的方法),其實(shí)Python2中raw_input()和input( ),兩個(gè)函數(shù)都存在,只不過(guò)input()函數(shù)只對(duì)數(shù)字有用;

Python3中對(duì)兩個(gè)函數(shù)進(jìn)行了整合,把raw_input()去掉了,增強(qiáng)input()函數(shù)的功能,使其將所有輸入當(dāng)作字符串來(lái)處理,并返回字符串類(lèi)型;

6)python3中加入了關(guān)鍵詞as 和with ;

7)python3中增加了f' {} ',格式化,在python2中是沒(méi)有這個(gè)功能的;

第四:數(shù)據(jù)類(lèi)型的使用上發(fā)生變化

1)python3去除了長(zhǎng)整型long類(lèi)型,只保留整型int

2)python3中str表示字符串序列,byte表示字節(jié)序列;python2中Unicode表示字符串序列,str表示字節(jié)序列;

3)字典類(lèi)型下的方法.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數(shù)都被廢棄了has_key()用 in替代了它的使用;

第五:異常的捕捉發(fā)生變化

1)在Python3中,只有繼承自BaseException的對(duì)象才可以被拋出,換句話(huà)說(shuō)異常類(lèi)全部繼承自BaseException,python2中各類(lèi)型對(duì)象均可以?huà)伋觯?并且異常StandardError 也被Python3廢棄,統(tǒng)一使用Exception;

2)捕獲異常的語(yǔ)法改變,用 raise Exception(args)代替 raise Exception, args語(yǔ)法,并且引入了as關(guān)鍵字來(lái)標(biāo)識(shí)異常實(shí)例;

第六:python3引入了抽象基類(lèi)

python3中引入了Abstraact Base Classes,ABCs抽象基類(lèi),并且也因此增加了@abstractmethod和 @abstractproperty兩個(gè)裝飾器,對(duì)于編寫(xiě)抽象方法更加方便。

第七:其它變化

1)xrange() 改為range(),如果想用range()創(chuàng)建一個(gè)list,需要進(jìn)行強(qiáng)類(lèi)型轉(zhuǎn)換。比如:list(range(10));

2) 序列化模塊python3中把python2中的cpickle移除,換成pickle模塊使用;

3)zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函數(shù)都被去除了。python2中的callable(func)函數(shù)在python3中可以使用hasattr(func, '__call__');python2中reduce() 在python3中使用functools模塊包中的reduce();

4)比較的返回不同,如果x < y的不能比較,拋出TypeError異常。python2版本是返回偽隨機(jī)布爾值的;

5)file類(lèi)在pytho3中被廢棄,并且python3中只能使用open(....)去打開(kāi)文件;

第八:市場(chǎng)價(jià)值

當(dāng)前因?yàn)閜ython2官方不再維護(hù)且python3的廣泛使用,很多新的算法包、AI包等其他功能模塊包都是基于python3開(kāi)發(fā)的,python2基本不兼容。

另一方面,現(xiàn)在很多企業(yè)仍保留python2的代碼沒(méi)有進(jìn)行迭代更新,并且當(dāng)前很多云服務(wù)器上自帶安裝的是python2(比如阿里云服務(wù)器),很多企業(yè)為圖方便不再安裝python3直接使用服務(wù)器上的python2進(jìn)行開(kāi)發(fā)腳本程序。

結(jié)語(yǔ):python2到python3的完全過(guò)度還需要一個(gè)過(guò)程,掌握了解他們才是我們應(yīng)該做的。(當(dāng)前python也提供了2to3的腳本可供版本代碼轉(zhuǎn)換)

以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多Python技巧,歡迎持續(xù)關(guān)注六星源課堂!


python2與python3有什么區(qū)別?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南康市| 密山市| 博湖县| 威远县| 浪卡子县| 安远县| 金平| 尼木县| 苍梧县| 凤山县| 永新县| 浮山县| 德令哈市| 清河县| 丁青县| 台安县| 景泰县| 定西市| 乌海市| 禄丰县| 桐城市| 鹿邑县| 五河县| 华池县| 台南市| 宜宾市| 葫芦岛市| 南溪县| 凤庆县| 丹阳市| 大英县| 平乡县| 柘城县| 镇安县| 临江市| 鄢陵县| 独山县| 体育| 高邮市| 锡林浩特市| 磐石市|