簡單的說,2是舊3是新,3是2的升級版,3完全高於2,2是時代的眼淚3是現在和未來,2逐漸被淘汰3用的人越來越多。之前兩個版本共存只是因為諸多package的更新換代並沒有跟上,但是到了現在只要還有活人維護的package基本都兼容3了,然而新建的package卻越來越多不兼容2。使用2的意義基本沒有了,日常用3大不了留一個2備用就行。
Python2 和Python3 的主要區別有以下幾個方面:
1.在Python2中,print是一個打印語句,將Python后面的內容視為元組對象,直接打印出來,;在Python3中做為函數存在,print函數可以接收多個位置的參數,即print(arg1,arg2...argn)輸出的參數之間用空格隔開,例:
2.編碼的改變
2.編碼的改變
Python2默認ASCII編碼方式,但是ASCII編碼無法對中文等字符進行有效編碼,因此在涉及到中文等其他字符的編碼問題時,ASCII不僅無能為力,而且經常帶來一些亂七八糟的錯誤,這也是Python2中經常出現編碼錯誤的原因之一;
2008年Python3.0橫空出世!
自此以后,編寫Python3.0以后的代碼時,新手們的第一行代碼再也不用因為糾結到底使用#coding = utf-8還是用# -- coding:utf-8 -- 而輾轉反側,徹夜難眠了,因為Python3默認采用了UTF-8編碼。
3.True和False的改變
Python2把True 和False視為全局變量,可以隨意賦值;Python3把True和False變成了兩個關鍵字,指向了兩個固定的對象,不能再被重新賦值。
4.nonlocal關鍵字
Python2中要想在嵌套函數中將一個變量聲明為非局部變量是不可能的;Python3中加入了nonlocal關鍵字,可以在嵌套函數中給變量前面添加關鍵字nonlocal,就可在嵌套函數之外使用嵌套函數中的變量。