python2 與python3 的一些區別
阿新 • • 發佈:2019-02-05
1、print函式
python2:print語句 ( Python2 中若把 print 當函式使用,那麼可以匯入 future 模組 中的 print_function)
Python3:print函式,必須用括號括起來才能呼叫
2、輸入函式
python2:raw_input 得到str, input 得到int
python3:input 得到str
3、使用super()
python2: 必須顯示的在引數中寫上基類
python3:直接無引數呼叫即可
4、1/2的結果
py:返回0
py3:返回0.5,沒有了int和long的區別
5、編碼
py2:預設編碼ascii ,py2中使用中文,在頭部引入coding宣告
py3:預設編碼utf-8
6、字串
py2:unicode型別表示字串序列,str型別表示位元組序列
py3::str型別表示字串序列,byte型別表示位元組序列
7、True和False
py2:True 和 False 在 Python2 中是兩個全域性變數,可以為其賦值或者進行別的操作,初始數值分別為1和0,雖然修改是違背了python設計的原則,但是確實可以更改
py3:修正了這個變數,讓True或False不可變
8、迭代器
py2:當中許多返回列表的方法,如range,字典物件的 dict.keys()、dict.values() 方法, map、filter、zip;並且迭代器必須實現next方法
py3:將返回列表的方法改為了返回迭代器物件,內建了__next__,不用特意去實現next
9、nonlocal
py2:沒有辦法在巢狀函式中將變數宣告為一個非區域性變數,只能在函式中宣告全域性變數
py3:nonlocal方法實現了,即在內部巢狀函式中用關鍵字nonlocal修飾區域性變數,可修改這個區域性變數
如:
def func():
c = 1
def foo():
c = 12
foo()
print(c)
func() #1
def func():
c = 1
def foo():
nonlocal c
c = 12
foo()
print(c)
func() # 12
10、其他
https://www.cnblogs.com/hanggegege/p/5840005.html