大家在初學(xué) Python 編程的時(shí)候往往都會(huì)有一個(gè)疑慮,到底是選擇 Python 2 還是選擇 Python 3 呢?之前也有Python學(xué)習(xí)教程跟大家分享過(guò)Python3學(xué)習(xí)教程,那么這里跟大家總結(jié)一下Python2和Python3的區(qū)別!
1. print 語(yǔ)句
python 2 中 print 是一個(gè)語(yǔ)句,語(yǔ)句就意味著可以直接跟要打印的東西,不論想輸出什么,直接放到 print 關(guān)鍵字后面即可(注:在 Python 2 中想讓 print 也當(dāng)函數(shù)使用,可以導(dǎo)入 future 模塊 中的 print_function)

Python 2
python 3 里,print() 是一個(gè)函數(shù),函數(shù)就表示要加上括號(hào)才能調(diào)用,像其他函數(shù)一樣,print() 需要你將要輸出的東西作為參數(shù)傳給它

Python 3
2. raw_input() 和 input() 輸入函數(shù)
python 2 有兩個(gè)全局函數(shù),用在命令行請(qǐng)求用戶輸入。第一個(gè)叫 input(),它等待用戶輸入一個(gè) python 表達(dá)式(然后返回結(jié)果);第二個(gè)叫做 raw_input(),返回的結(jié)果為用戶輸入的值
value = raw_input ("input values")
python 3 中使用 input()
value = input ("input values")
3. 使用 super() 的不同
python 2:必須顯示的在參數(shù)中寫(xiě)上基類
python 3:可以不用再給super()傳參數(shù),直接無(wú)參數(shù)調(diào)用即可

4. 編碼和字符串
python 2:默認(rèn)編碼 ascii,unicode 類型表示字符串序列,str 類型表示字節(jié)序列
python 3:默認(rèn)編碼 utf-8,str 類型表示字符串序列,byte 類型表示字節(jié)序列(注:因?yàn)樵创a文件默認(rèn)使用 utf-8 編碼,所以用中文給變量命名是合法的,但是不推薦使用)

5. True 和 False
python 2:True 和 False 在 Python 2 中是兩個(gè)全局變量,可以為其賦值或者進(jìn)行別的操作,初始數(shù)值分別為 1 和 0,可以對(duì)其進(jìn)行修改
python 3:True 或 False 不可變
6. range 和 xrange
python 2 中有 range: range([start,] stop[, step]),根據(jù) start 與 stop 指定的范圍以及 step 設(shè)定的步長(zhǎng),返回值是一個(gè)列表;xrange 和 range 的用法完全相同,但是返回的是一個(gè)生成器
python 3 中只有 range,并且python 3 中的 range 等同于 python 2 中的 xrange,返回一個(gè)生成器,想要使用 range() 獲得一個(gè) list,必須顯式調(diào)用
list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7. package
package 在 python 2 中必須有 init 方法
在 python 3 中可以沒(méi)有 init 方法
8. 迭代器
python 2:有很多返回列表的方法,如 range(),字典對(duì)象的 dict.keys()、dict.values() 方法, map()、filter()、zip() etc...并且迭代器必須實(shí)現(xiàn) next 方法
python 3:將返回列表的方法改為了返回迭代器對(duì)象,并且內(nèi)置了 next,所以不用特意去實(shí)現(xiàn) next 方法
9. 除法的結(jié)果
在 python 2 中,除法的取值結(jié)果取整數(shù)(注:如果希望結(jié)果取小數(shù),需要導(dǎo)入 future 模塊 中的 division)

Python 2
在 python 3 中,除法 / 的結(jié)果包含小數(shù),使用 // 只取整數(shù)

Python 3
10. Long長(zhǎng)整型
python 2 有 int 和 long 類型。且 int 類型最大值不能超過(guò) sys.maxint??梢酝ㄟ^(guò)在數(shù)字的末尾附上一個(gè)L來(lái)定義長(zhǎng)整型,顯然,它比int類型表示的數(shù)字范圍更大
python 3 只有一種整數(shù)類型 int,大多數(shù)情況下,和python2中的長(zhǎng)整型類似
11. 比較運(yùn)算符
python 2 支持 <> 等同于 !=
python 3 只支持 !=,不再支持<>
12. 對(duì)元組的列表解析
在 python 2 里,如果需要編寫(xiě)一個(gè)遍歷元組的列表解析,不需要在元組值周圍加上括號(hào)
python 2:[ i for i in 1, 10]
在 python 3 里,括號(hào)是必需的
python 3:[i for i in (1,10)]