回覆列表
  • 1 # 千鋒python學院

    大家在初學 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)]

  • 2 # 架構之美

    目前大部分公司還是用著Python2,但是2.7版本的維護只會持續到2020年;從長遠的角度去看,新手應該學習有更多特性的Python3。

    但是有一點不能遺棄,那就是我們學習一門的終極目的是解決問題,如果公司沒有使用Python3的條件,那工作時還是需要用Python2,強調一下,我說的是工作的時候。

  • 3 # V視角看球

    python2 和 python3 有部分語法不通,所以這兩個版本的編譯器實際上是相互不支援的。

    例如:print 等寫法是不同的。

    以前python2作為主流,支援的庫比較多,且大部分人的專案都在Python2上面跑,所以,這是很多人一直沒有轉3的原因。但是現在python3的庫越來越多,越來越全,而且很多基於Python2的社群也好,庫也好,都開始慢慢停止更新了。所以Python3是一個趨勢。

    如果作為入門,我覺得學習Python2 或者 Python3都可以,畢竟變成思想是相通的,但是如果沒有歷史包袱作為羈絆,可以直接學Python3,畢竟新版本是趨勢,既然從頭開始學習,那麼從未來使用和工程的角度來看,Python3會更加主流。

  • 中秋節和大豐收的關聯?
  • 春秋戰國時期有氣勢的詩?