日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Python2和Python3之间有什么区别(nimble22的博客)

發(fā)布時(shí)間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python2和Python3之间有什么区别(nimble22的博客) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文操作環(huán)境:Windows7系統(tǒng)、Dell G3電腦、python3.6.4版。

本篇文章給大家介紹Python2和Python3之間有什么區(qū)別,讓大家可以對(duì)Python版本有所了解。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你們有所幫助。

我們?nèi)绻皇煜ython,可能會(huì)對(duì)Python可用的不同版本感到困惑。對(duì)于應(yīng)該使用哪個(gè)版本的Python的這個(gè)問(wèn)題目前是沒(méi)有明確答案的,這決定取決于你想要達(dá)到的目標(biāo)。

雖然Python 3是該語(yǔ)言的最新一代,是該語(yǔ)言的未來(lái),但還是有許多程序員仍然使用Python 2.7,這個(gè)2010年發(fā)布的Python 2的最終更新版本。這是因?yàn)橐恍┹^舊的庫(kù)和軟件包僅適用于Python 2。

為什么有不同版本的Python?

隨著開(kāi)發(fā)人員擴(kuò)展語(yǔ)言的功能,并消除給開(kāi)發(fā)人員帶來(lái)問(wèn)題的怪癖,編程語(yǔ)言不斷演進(jìn)。Python 3是在2008年引入的,其目的是使Python更易于使用,并改變它處理字符串的方式,以符合當(dāng)今對(duì)語(yǔ)言的要求。剛學(xué)會(huì)用Python 2編程的程序員有時(shí)發(fā)現(xiàn)很難適應(yīng)新的變化,但是新手經(jīng)常發(fā)現(xiàn)新版本的語(yǔ)言更有意義。

Python 3.0與以前的Python版本有著本質(zhì)的不同,因?yàn)樗堑谝粋€(gè)與舊版本不兼容的Python版本。程序員通常不需要擔(dān)心小的更新(例如,從2.6到2.7),因?yàn)樗麄兺ǔV桓淖働ython的內(nèi)部工作,而不需要程序員改變他們的語(yǔ)法。Python 2.7(Python 2的最終版本)和Python 3.0之間的變化要重大得多了,這使得在Python 2.7中工作的代碼可能需要以不同的方式編寫(xiě)才能在Python 3.0中工作。

Python 2和Python 3之間的主要區(qū)別是什么?

1、輸出--print

在Python 2中,“print”被視為語(yǔ)句而不是函數(shù)。盡管你可以,但你無(wú)需將要輸出的文本包裝在括號(hào)中。這可能令人困惑,因?yàn)镻ython中的大多數(shù)其他操作都使用需要將參數(shù)放在括號(hào)內(nèi)的函數(shù)。如果將括號(hào)放在要輸出的以逗號(hào)分隔的項(xiàng)目列表周?chē)矔?huì)導(dǎo)致意外結(jié)果。

在Python 3中,就明確的將“print”視為一個(gè)函數(shù),這意味著你必須以標(biāo)準(zhǔn)方式將需要輸出的項(xiàng)目傳遞給括號(hào)中的函數(shù),否則你將收到語(yǔ)法錯(cuò)誤。一些Python 2程序員發(fā)現(xiàn)這種變化很煩人,但它可以幫助防止錯(cuò)誤的發(fā)生。

例:

print 'Hello, Geeks'   # Python 3.x 不支持
print('Hope You like these facts')

登錄后復(fù)制

輸出:

Python 2.x的輸出:

Python 3.x的輸出:

因?yàn)閜rint 'Hello, Geeks'在Python 3.x 不支持,所以出錯(cuò):

2、整數(shù)除法:

Python 2將小數(shù)點(diǎn)后面沒(méi)有任何數(shù)字的數(shù)字視為整數(shù),這可能會(huì)導(dǎo)致在除法期間出現(xiàn)意外結(jié)果。例如,如果在Python 2代碼中輸入表達(dá)式:3/2,則評(píng)估結(jié)果將為1,而不是你所期望的1.5。

這是因?yàn)镻ython 2會(huì)假設(shè)你希望除法的結(jié)果為整數(shù),因此它將計(jì)算向下舍入到最接近的整數(shù)。為了獲得結(jié)果1.5,你必須編寫(xiě)3.0 / 2.0來(lái)告訴Python,你希望它返回一個(gè)浮點(diǎn)數(shù),即在結(jié)果中包含小數(shù)點(diǎn)后面的數(shù)字。

Python 3則會(huì)默認(rèn)將3/2評(píng)估為1.5,這對(duì)于新程序員來(lái)說(shuō)有更直觀的感受。

3、列表理解循環(huán)變量:

在以前的Python 2.x版本中,給出在列表推導(dǎo)中迭代的變量與全局變量相同的名稱可能導(dǎo)致全局變量的值被更改, 這通常不是你想要的。

在Python 3中已經(jīng)修復(fù)了這個(gè)煩人的錯(cuò)誤。因此,你可以使用在列表理解中已經(jīng)用于控制變量的變量名,而不必?fù)?dān)心它泄露并擾亂其余代碼中變量的值。

4、Unicode字符串:

默認(rèn)情況下,Python 3是將字符串存儲(chǔ)為Unicode,而如果Python 2要將字符串存儲(chǔ)為Unicode,則要求使用“u”標(biāo)記字符串。Unicode字符串比ASCII字符串更通用,它們都是Python 2的默認(rèn)字符串,因?yàn)樗鼈兛梢源鎯?chǔ)來(lái)自外語(yǔ)的字母以及表情符號(hào)和標(biāo)準(zhǔn)的羅馬字母和數(shù)字。如果要確保Python 3代碼與Python 2兼容,你仍然可以使用“u”來(lái)標(biāo)記Unicode字符串。

5、錯(cuò)誤處理:

Python 2和Python 3兩個(gè)版本的錯(cuò)誤處理有一個(gè)小的變化。

在python 3.x中,'as'關(guān)鍵字是必需的。例:

try: 
    trying_to_check_error 
except NameError, err: 
    print err, 'Error Caused'   # 不能在Python 3中工作

登錄后復(fù)制

運(yùn)行:

Python 2.x中輸出:

Python 3.x 中運(yùn)行,報(bào)錯(cuò):

try: 
     trying_to_check_error 
except NameError as err:    # 'as' 是 Python 3.x 必需的存在的關(guān)鍵字
     print (err, 'Error Caused')

登錄后復(fù)制

運(yùn)行:

Python 2.x中輸出:

Python 3中輸出:

6、xrange:

Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一個(gè)列表,即range(3)返回[0,1,2],而xrange返回一個(gè)xrange對(duì)象,即xrange(3)返回iterator對(duì)象,它與Java迭代器類似,并在需要時(shí)生成數(shù)字。
如果我們需要多次迭代相同的序列,我們更喜歡range(),因?yàn)閞ange提供了一個(gè)靜態(tài)列表。xrange()每次重建序列。xrange()不支持切片和其他列表方法。xrange()的優(yōu)點(diǎn)是,當(dāng)任務(wù)迭代大范圍時(shí),它可以節(jié)省內(nèi)存。

在Python 3.x中,范圍函數(shù)現(xiàn)在執(zhí)行xrange在Python 2.x中的功能,因此為了保持代碼的可移植性,我們可能希望堅(jiān)持使用范圍。所以Python 3.x的范圍函數(shù)是來(lái)自Python 2.x的xrange。

例:

for x in xrange(1, 5): 
    print(x), 
  
for x in range(1, 5): 
    print(x),

登錄后復(fù)制

運(yùn)行:

Python 2.x中輸出:

Python 3中運(yùn)行,報(bào)錯(cuò):

選擇哪種版本歸結(jié)為你需要的是什么庫(kù)

Python 2已經(jīng)存在更長(zhǎng)時(shí)間,這可能是一個(gè)優(yōu)勢(shì),并不是所有可用于Python 2的庫(kù)都已移植到Python 3.另一方面,一些開(kāi)發(fā)人員正在為Python 3創(chuàng)建可能與Python 2不兼容的庫(kù)。對(duì)于很多人來(lái)說(shuō),決定使用Python 2還是Python 3取決于他們想要使用哪些庫(kù)。當(dāng)然,如果你正在學(xué)習(xí)Python來(lái)處理現(xiàn)有的Python應(yīng)用程序,那么學(xué)會(huì)使用編寫(xiě)軟件的Python版本是有意義的。

許多人認(rèn)為Python 3是Python 2的改進(jìn)版本,因?yàn)橐恍└孪顺绦騿T常見(jiàn)的錯(cuò)誤(參見(jiàn)上面的打印示例)。如上所述,一些更改使Python 3更易于初學(xué)者理解。因此,不需要使用任何特定庫(kù)的新程序員可能會(huì)考慮學(xué)習(xí)Python 3,因?yàn)樵谖磥?lái)幾年可能會(huì)逐漸轉(zhuǎn)向新語(yǔ)言,因?yàn)镻ython 2的更新停止并支持舊版本該語(yǔ)言版本減少。用法統(tǒng)計(jì)顯示使用Python 3的程序員數(shù)量已逐漸增加。

除非有明確的理由選擇一個(gè)版本的Python而不是另一個(gè)版本,例如需要處理用Python 2編寫(xiě)的現(xiàn)有代碼,否則不值得擔(dān)心這個(gè)決定。大多數(shù)語(yǔ)法在每種語(yǔ)言版本中都是相同的。如果你需要從Python 2切換到Python 3,反之亦然,那么熟悉打印語(yǔ)句/函數(shù)的更改以及Python處理整數(shù)除法的方式之間的差異不應(yīng)花費(fèi)太長(zhǎng)時(shí)間。

總結(jié):以上就是本篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)有所幫助。

以上就是Python2和Python3之間有什么區(qū)別的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注風(fēng)君子博客其它相關(guān)文章!

總結(jié)

以上是生活随笔為你收集整理的Python2和Python3之间有什么区别(nimble22的博客)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。