[python]python2與python3版本的區別

python2和python3的區別python

區別:函數

  • print函數
  • 整數相除
  • Unicode
  • 異常處理
  • xrange
  • map函數
  • 不支持has_key

print函數:編碼

Python 2:  print是語句(statement)spa

print "Hello World!"

# 結果:Hello World!

Python 3:  print是函數code

print('Hello World!') # 結果:Hello World!

print 'Hello World'

# 結果:SyntaxError: Missing parentheses in call to 'print'. Did you mean print('Hello World')?

 

整數相除:blog

Python 2:  3/2的結果是整數utf-8

print 3 / 2

# 結果:1

print 3 / 2.0

# 結果:1.5

Python 3:  3/2的結果是浮點數unicode

print(3 / 2) # 結果:1.5

print(3 / 2.0) # 結果:1.5

 

Unicode:字符串

Python 2:  有兩種字符串類型:str和unicodeit

a = '您好'
print a # 結果:SyntaxError: Non-ASCII character '\xe6' in file ......, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

# 在Python 2中,若是代碼中包含非英文字符,須要在代碼文件的最開始聲明編碼
# _*_ coding:utf-8 _*_ a = '您好' print a # 結果:您好

Python 3:  字符串默認就是Unicode

a = '您好'
print(a) # 結果:您好

Python 3中的str至關於Python 2中的unicode

 

異常處理:

Python 2:

try: result = 1 / 0 print result except ZeroDivisionError, e: print str(e) # 結果:integer division or modulo by zero

try: result = 1 / 0 print result except ZeroDivisionError as e: print str(e) # 結果:integer division or modulo by zero

Python 3:  只支持as關鍵字

try: result = 1 / 0 print(result) except ZeroDivisionError as e: print(str(e)) # 結果:division by zero

 

xrange:

Python 2:  有 range 和 xrange 兩個方法

區別:

  • range返回一個list,在被調用的時候即返回整個序列
  • xrange返回一個iterator,在每次循環中生成序列的下一個數字
# range
print range(4) # 結果:[0, 1, 2, 3]

# xrange
print xrange(4) # 結果:xrang(4)

Python 3:  再也不支持 xrange 方法

print(range(4)) # 結果:range(0, 4)

for i in range(4): print(i, end=' ') # 結果:0 1 2 3

Python 3中的 range 方法就至關於 Python 2中的 xrange 方法

 

map函數:

Python 2:  map函數返回list

print map(lambda x: x+1, range(5)) # 結果:[1, 2, 3, 4, 5]

Python 3:  map函數返回iterator

print(map(lambda x: x+1, range(5))) # 結果:<map object at 0x00000233A7B85E10>

print(list(map(lambda x: x+1, range(5)))) # 結果:[1, 2, 3, 4, 5]

filter函數在Python 2和Python 3中也是一樣的區別

 

不支持has_key:

Python 2:

my_dict = {"age": 30, "name": "Zhang San"} print my_dict.has_key("age") print "age" in my_dict # 結果:True # True

Python 3:

my_dict = {"age": 30, "name": "Zhang San"} print("age" in my_dict) # 結果:True

print(person.has_key("age")) # 結果:AttributeError: 'dict' object has no attribute 'has_key'
相關文章
相關標籤/搜索