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()對象
py2:必須顯示的在參數中寫上基類ip
py:直接無參數調用便可utf-8
py2:返回0ci
py3:返回0.5,沒有了int和long的區別unicode
py2:默認編碼ascii
py3:默認編碼utf-8
並且爲了在py2中使用中文,在頭部引入coding聲明,不推薦使用
py2:unicode類型表示字符串序列,str類型表示字節序列
py3::str類型表示字符串序列,byte類型表示字節序列
py2:True 和 False 在 Python2 中是兩個全局變量,能夠爲其賦值或者進行別的操做,初始數值分別爲1和0,雖然修改是違背了python設計的原則,可是確實能夠更改
py3:修正了這個變量,讓True或False不可變
py2:當中許多返回列表的方法,如range,字典對象的 dict.keys()、dict.values() 方法, map、filter、zip;而且迭代器必須實現next方法
py3:將返回列表的方法改成了返回迭代器對象,內置了__next__,不用特地去實現next
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