新手學python應該如何選擇python2和python3?
大家在初學 Python 編程的時候往往都會有一個疑慮,到底是選擇 Python 2 還是選擇 Python 3 呢?給大家示例解讀一下 Python 2 和 Python 3 之間的主要區別,怎么選你自己心里就有答案了!
1. print 語句
python 2 中 print 是一個語句,語句就意味著可以直接跟要打印的東西,不論想輸出什么,直接放到 print 關鍵字后面即可(注:在 Python 2 中想讓 print 也當函數使用,可以導入 future 模塊 中的 print_function)
Python 2
python 3 里,print() 是一個函數,函數就表示要加上括號才能調用,像其他函數一樣,print() 需要你將要輸出的東西作為參數傳給它
Python 3
2. raw_input() 和 input() 輸入函數
python 2 有兩個全局函數,用在命令行請求用戶輸入。第一個叫 input(),它等待用戶輸入一個 python 表達式(然后返回結果);第二個叫做 raw_input(),返回的結果為用戶輸入的值value = raw_input ("input values")
python 3 中使用 input()value = input ("input values")
3. 使用 super() 的不同
python 2:必須顯示的在參數中寫上基類
python 3:可以不用再給super()傳參數,直接無參數調用即可
4. 編碼和字符串
python 2:默認編碼 ascii,unicode 類型表示字符串序列,str 類型表示字節序列
python 3:默認編碼 utf-8,str 類型表示字符串序列,byte 類型表示字節序列(注:因為源碼文件默認使用 utf-8 編碼,所以用中文給變量命名是合法的,但是不推薦使用)
5. True 和 False
python 2:True 和 False 在 Python 2 中是兩個全局變量,可以為其賦值或者進行別的操作,初始數值分別為 1 和 0,可以對其進行修改
python 3:True 或 False 不可變
6. range 和 xrange
python 2 中有 range: range([start,] stop[, step]),根據 start 與 stop 指定的范圍以及 step 設定的步長,返回值是一個列表;xrange 和 range 的用法完全相同,但是返回的是一個生成器
python 3 中只有 range,并且python 3 中的 range 等同于 python 2 中的 xrange,返回一個生成器,想要使用 range() 獲得一個 list,必須顯式調用
list(range(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7. package
package 在 python 2 中必須有 init 方法
在 python 3 中可以沒有 init 方法
8. 迭代器
python 2:有很多返回列表的方法,如 range(),字典對象的 dict.keys()、dict.values() 方法, map()、filter()、zip() etc...并且迭代器必須實現 next 方法
python 3:將返回列表的方法改為了返回迭代器對象,并且內置了 next,所以不用特意去實現 next 方法
9. 除法的結果
在 python 2 中,除法的取值結果取整數(注:如果希望結果取小數,需要導入 future 模塊 中的 division)
Python 2
在 python 3 中,除法 / 的結果包含小數,使用 // 只取整數
Python 3
10. Long長整型
python 2 有 int 和 long 類型。且 int 類型最大值不能超過 sys.maxint。可以通過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字范圍更大
python 3 只有一種整數類型 int,大多數情況下,和python2中的長整型類似
11. 比較運算符
python 2 支持 <> 等同于 !=
python 3 只支持 !=,不再支持<>
12. 對元組的列表解析
在 python 2 里,如果需要編寫一個遍歷元組的列表解析,不需要在元組值周圍加上括號
python 2:[ i for i in 1, 10]
在 python 3 里,括號是必需的
python 3:[i for i in (1,10)]