python2與python3之間的主要區別

python2與python3之間的主要區別

  • print

py2:print語句,語句就意味着能夠直接跟要打印的東西,若是後面接的是一個元組對象,直接打印python

py3:print函數,函數就覺得這必需要加上括號才能調用,若是接元組對象,能夠接收多個位置參數,並能夠打印函數

若是但願在 Python2 中 把 print 當函數使用,那麼能夠導入 future 模塊 中的 print_function編碼

下面有個示例:設計

# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world
# py2
>>> print("hello", "world")
('hello', 'world')
>>> from __future__ import print_function
>>> print("hello", "world")
hello world
  • 輸入函數

py2:input_raw()code

py3:input()對象

  • 在使用super()的不一樣

py2:必須顯示的在參數中寫上基類ip

py:直接無參數調用便可utf-8

  • 1/2的結果

py2:返回0ci

py3:返回0.5,沒有了int和long的區別unicode

  • 編碼

py2:默認編碼ascii

py3:默認編碼utf-8

並且爲了在py2中使用中文,在頭部引入coding聲明,不推薦使用

  • 字符串

py2:unicode類型表示字符串序列,str類型表示字節序列

py3::str類型表示字符串序列,byte類型表示字節序列

  • True和False

py2:True 和 False 在 Python2 中是兩個全局變量,能夠爲其賦值或者進行別的操做,初始數值分別爲1和0,雖然修改是違背了python設計的原則,可是確實能夠更改

py3:修正了這個變量,讓True或False不可變

  • 迭代器

py2:當中許多返回列表的方法,如range,字典對象的 dict.keys()、dict.values() 方法, map、filter、zip;而且迭代器必須實現next方法

py3:將返回列表的方法改成了返回迭代器對象,內置了__next__,不用特地去實現next

  • nonlocal

py2:沒有辦法在嵌套函數中將變量聲明爲一個非局部變量,只能在函數中聲明全局變量

py3: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
相關文章
相關標籤/搜索