1. 程式人生 > 程式設計 >Python2與Python3的區別點整理

Python2與Python3的區別點整理

python直譯器預設編碼(python2與python3的區別一)

python2 直譯器預設編碼:ascii

python3 直譯器預設編碼:utf-8

輸入(python2與python3的區別二)

python2:name=raw_input('請輸入姓名')

python3:name=input('請輸入你的姓名')

輸出(python2與python3的區別三)

python2:print "你好"

python3:print("你好")

數字表示(python2與python3的區別四)

python2

64位機器,範圍-2^63~2^63-1

超出上述範圍,python自動轉化為long(長整型)

注:long(長整型)數字末尾有一個L

python3

所有整型都是int,沒有long(長整型)

整型除法(python2與python3的區別五)

python2:只能保留整數位

python3:可以保留所有內容

range / xrange(python2與python3的區別六)

python2:

xrange:不會在記憶體中立即建立,而是在迴圈時,邊迴圈邊建立

range:在記憶體立即把所有的值建立

python3:

只有range,相當於python2中的xrange

range:不會在記憶體中立即建立,而是在迴圈時,邊迴圈邊建立

包的定義(python2與python3的區別七)

python2:資料夾中必須有_ _ init _ _.py檔案

python3:不需要有_ _ init _ _.py檔案

字典的keys / values / items方法(python2與python3的區別八)

python2:返回列表,通過索引可以取值

python3:返回迭代器,只能通過迴圈取值,不能通過索引取值

map / filter(python2與python3的區別九)

python2:返回列表,直接建立值,可以通過索引取值

python3:返回迭代器,不直接建立值,通過迴圈,邊迴圈邊建立

str(字串型別)的區別(python2與python3的區別十)(最大區別,優先寫這個)

python2:

str型別,相當於python3中的位元組型別,utf-8/gbk等其他編碼

unicode型別,相當於python3中的字串型別,unicode編碼

python2中沒有位元組型別

python3:

str型別,字串型別,unicode編碼

python3中沒有unicode型別

繼承object(python2與python3的區別十一):

class Foo:
  pass
class Foo(object):
  pass
# 在python3中這倆的寫法是一樣,因為所有的類預設都會繼承object類,全部都是新式類。

# 如果在python2中這樣定義,則稱其為:經典類
class Foo:
  pass 

# 如果在python2中這樣定義,則稱其為:新式類
class Foo(object):
  pass

# 新式類
  # 繼承object
  # 支援super
  # 多繼承 廣度優先C3演算法
  # mro方法
# 經典類
  # py2中不繼承object
  # 沒有super語法
  # 多繼承 深度優先
  # 沒有mro方法