1. 程式人生 > >python2 與python3 的一些區別

python2 與python3 的一些區別

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