[python]python2与python3版本的区别

2018/07/31 22:55
阅读数 267

python2和python3的区别

区别:

  • print函数
  • 整数相除
  • Unicode
  • 异常处理
  • xrange
  • map函数
  • 不支持has_key

print函数:

Python 2:  print是语句(statement)

print "Hello World!"

# 结果:Hello World!

Python 3:  print是函数

print('Hello World!')

# 结果:Hello World!

print 'Hello World'

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

 

整数相除:

Python 2:  3/2的结果是整数

print 3 / 2

# 结果:1

print 3 / 2.0

# 结果:1.5

Python 3:  3/2的结果是浮点数

print(3 / 2)

# 结果:1.5

print(3 / 2.0)

# 结果:1.5

 

Unicode:

Python 2:  有两种字符串类型:str和unicode

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'

 

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部