#python2和python3的区别有哪些,我们来细看
区别点:
- print函数
- 整数相除
- Unicode
- 异常处理
- xrange
- map函数
- 不支持has_key
print函数:
Python 2: print是语句(statement
print “Hello World!”
结果:Hello World!ment)
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’