淺述python2與python3的簡(jiǎn)單區(qū)別
python2:print語(yǔ)句,語(yǔ)句就意味著可以直接跟要打印的東西,如果后面接的是一個(gè)元組對(duì)象,直接打印
python3:print函數(shù),函數(shù)就以為這必須要加上括號(hào)才能調(diào)用,如果接元組對(duì)象,可以接收多個(gè)位置參數(shù),并可以打印
1、表達(dá)式
在 Python 2 中為獲得計(jì)算表達(dá)式,你會(huì)鍵入:
X = raw_input ("enter some values)
但在 Python 3 中,你會(huì)鍵入:
X = input ("enter some values")
因此,無論我們輸入什么,值都會(huì)分配給 2 和 3 中的變量 x。當(dāng)在 Python 2 中輸入 2*6 時(shí),結(jié)果將是 12,這是評(píng)估值。
但是,當(dāng)在 Python 3 中運(yùn)行相同的程序時(shí),結(jié)果是字符串值。 在這種情況下,它看起來像字符串格式的 2*6。
那么,我們?nèi)绾潍@得評(píng)估表達(dá)式呢? 現(xiàn)在,我們必須使用一個(gè)名為 eval 的表達(dá)式或函數(shù)。 當(dāng)您在輸入之前編寫 eval 時(shí),它會(huì)將表達(dá)式轉(zhuǎn)換為計(jì)算值。
x= eval(input("enter some values")) = 12
具體表達(dá)式示例:
在 Python 2 中:
name = input("What is your name? ")print ("Hello, %s." %name)
然后輸出:
在 Python 3 中:
name = input("What is your name? ")print ("Hello, %s." %name)
然后輸出:
我們可以清楚地看到,他們之間的差異很小。
2、Print 選項(xiàng)
在 Python 2 中,print 是一個(gè)不需要括號(hào)的語(yǔ)句。 在 Python 3 中,print 是一個(gè)函數(shù),值需要用括號(hào)括起來。
Python 2
輸入:
print "hello world"
會(huì)輸出:
Python 3
輸入:
1 != 1.0print (False)
會(huì)輸出:
3、Unequal 操作
當(dāng)我們?cè)?Python 2 中使用 Unequal 運(yùn)算符時(shí),我們需要使用大于 > 或小于 < 符號(hào)。 但是,在 Python 3 中,有一個(gè)通用運(yùn)算符。 感嘆號(hào) ! 和等號(hào) = 用于表示值是否相等。
Python 2 -<> 運(yùn)算符表示不相等
Python 3 -! 運(yùn)算符表示不相等
Python 2
輸入:
1 <> 1.0print "False"
會(huì)輸出:
Python 3
輸入:
1 != 1.0print (False)1 != 1.0print (False)
會(huì)輸出:
4、Range
Range 用于生成數(shù)字列表,通常用于迭代 for 循環(huán)。
在這里你可以看到 X 等于 Range 10。當(dāng)我們檢查變量 X 時(shí),它返回了列表類型。 這意味著在 Python 2 中,Range 是列表的類型。當(dāng)我寫 X 之后,得到一個(gè)對(duì)象列表,這里是:0 1 2 3 4 5 6 7 8 9。
現(xiàn)在讓我們轉(zhuǎn)到 Python 3,當(dāng)我們寫 X 等于 Range 5,這個(gè)值就被賦給變量 X;當(dāng)我們檢查變量 X 的類型時(shí),它會(huì)返回一個(gè) Range 對(duì)象本身。 這意味著在 Python 3 中,Range 是一個(gè)范圍對(duì)象本身。
Python 2
輸入:
print range(0,10,1)
會(huì)輸出:
Python 3
輸入:
print(list(range(10)))
會(huì)輸出:
5、自動(dòng)遷移
那么,我們?nèi)绾巫詣?dòng)執(zhí)行腳本以將代碼從 Python 2 移動(dòng)到 3?
在這里,我們可以使用 Python 中的 Add 2 Numbers 進(jìn)行測(cè)試。
Python 2
輸入:
n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add)
會(huì)輸出:
現(xiàn)在使用 2to3 的遷移,我們可以轉(zhuǎn)換上面的代碼。
輸入:
n1 = 1n2 = 2add = float(n1) + float(n2) print('sum of {0} and {1} is {2}'.format(n1, n2, add))
會(huì)輸出:
所以在這里我們看到它可以在命令行上通過 2to3 轉(zhuǎn)換為 Python 3 代碼。
Python 提供了自己的工具,名為 2to3.py,它運(yùn)行了一堆腳本來將你的 Python 2 代碼轉(zhuǎn)換為 3。雖然它并不完美,但它總體上做得非常出色。轉(zhuǎn)換任何代碼后,您可以手動(dòng)修復(fù)任何問題。
6、性能問題
此升級(jí)中已修復(fù)了大多數(shù)性能問題! 在比較兩個(gè)版本之間的基準(zhǔn)時(shí),差異幾乎可以忽略不計(jì)。
7、一些主要的內(nèi)部事務(wù)變更
Python 2
•print 功能括號(hào)選填。
•使用 u 作為前綴字符串以生成 unicode 字符串。
•整數(shù)除法總是返回整數(shù) -5/2=2。
•Raw_input() 讀取字符串。
•input() 評(píng)估讀取的數(shù)據(jù)。
•generator .next()。
Python 3:
•print 功能括號(hào)必填。
•默認(rèn)情況下為字符串 unicode。
•整數(shù)除法可能導(dǎo)致浮動(dòng) -5/2=2.5。
•Raw_input() 不可用。
•輸入始終讀取字符串。
•Next (generator)。
•Py2 to py3 實(shí)用程序。
•Dictionary .keys() 和 .values() 返回的為視圖不是列表。
•在非自然比較中不能再使用比較運(yùn)算符。
例如,None < None 將引發(fā) TypeError 而不是返回 false。
•不推薦使用百分比(%)字符串格式化運(yùn)算符,使用 .format() 函數(shù)或連接。
下面把python2與python3的區(qū)別簡(jiǎn)單總結(jié)以下八點(diǎn)
一、python2 的代碼混亂 重復(fù)較多 冗余 因?yàn)楫?dāng)時(shí)來編寫的人有C 語(yǔ)言的大牛 和 java的大牛等各種大神 所以里面都含有各種語(yǔ)言的影子
python3 經(jīng)過龜叔的一個(gè)暑假的整理 終于在2018年11月 統(tǒng)一了代碼 源碼規(guī)范 清晰 簡(jiǎn)單優(yōu)美。
二、python3 print("內(nèi)容")
python2 ptint() 或者print '內(nèi)容'
三、python3 編碼:utf-8
python2編碼: 默認(rèn)編碼:ascii 解決辦法:在首行 # -*- encoding:utf-8-*-
四、用戶交互 input
python2: raw-input()
python3:input ()
五、python2x :unicode 默認(rèn)2個(gè)字節(jié)表示一個(gè)字符 可以在LINUX 編譯安裝時(shí)做調(diào)整
python3x:unicode 默認(rèn)是4個(gè)字節(jié)表示一個(gè)字符
六、python2x 沒有nonlocal
python3x 加入的
七 、python3x 新建的包里面的init文件如果你刪除該文件 包照樣可以被調(diào)用
python2x 新建的包如果沒有init文件 則包不能夠被調(diào)用 直接報(bào)錯(cuò)
八、python2 中的經(jīng)典類 遍歷方法是以深度優(yōu)先 新式類是以廣度優(yōu)先
python3 中不存在經(jīng)典類 所有的類都是新式類 所以都是廣度優(yōu)先
總結(jié)
以上所述是小編給大家介紹的python2與python3的簡(jiǎn)單區(qū)別,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Python3.x和Python2.x的區(qū)別介紹
- python3 與python2 異常處理的區(qū)別與聯(lián)系
- python2 與python3的print區(qū)別小結(jié)
- 淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別
- python2 中 unicode 和 str 之間的轉(zhuǎn)換及與python3 str 的區(qū)別
- Python2與Python3的區(qū)別實(shí)例分析
- Python2.X/Python3.X中urllib庫(kù)區(qū)別講解
- python2和python3的輸入和輸出區(qū)別介紹
- python2和python3在處理字符串上的區(qū)別詳解
- python面試題Python2.x和Python3.x的區(qū)別
- Python2與Python3的區(qū)別點(diǎn)整理
- Python2 與Python3的版本區(qū)別實(shí)例分析
相關(guān)文章
python中sys.argv函數(shù)精簡(jiǎn)概括
本篇文章給大家分享了關(guān)于python中sys.argv函數(shù)的相關(guān)知識(shí)點(diǎn),有興趣的朋友可以參考學(xué)習(xí)下。2018-07-07使用 Python 合并多個(gè)格式一致的 Excel 文件(推薦)
這篇文章主要介紹了使用 Python 合并多個(gè)格式一致的 Excel 文件,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12詳解如何使用Python網(wǎng)絡(luò)爬蟲獲取招聘信息
在疫情階段,想找一份不錯(cuò)的工作變得更為困難,很多人會(huì)選擇去網(wǎng)上看招聘信息??墒钦衅感畔⒂幸恍┦清e(cuò)綜復(fù)雜的。本文將為大家介紹用Python爬蟲獲取招聘信息的方法,需要的可以參考一下2022-03-03使用python實(shí)現(xiàn)深度優(yōu)先遍歷搜索(DFS)的示例代碼
深度優(yōu)先搜索算法(Depth-First-Search,DFS)是一種用于遍歷或搜索樹或圖的算法,沿著樹的深度遍歷樹的節(jié)點(diǎn),盡可能深的搜索樹的分支,本文給大家介紹了如何基于python實(shí)現(xiàn)深度優(yōu)先遍歷搜索(DFS),需要的朋友可以參考下2024-01-01python3中_from...import...與import?...之間的區(qū)別詳解(包/模塊)
Python編碼第一步是導(dǎo)入模塊,有時(shí)候用import?***有時(shí)候用from...import,下面這篇文章主要給大家介紹了關(guān)于python3中_from...import...與import?...之間區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-08-08Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支
這篇文章主要介紹了Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python3實(shí)現(xiàn)從文件中讀取指定行的方法
這篇文章主要介紹了Python3實(shí)現(xiàn)從文件中讀取指定行的方法,涉及Python中l(wèi)inecache模塊操作文件的使用技巧,需要的朋友可以參考下2015-05-05