python2和python3的版本,目前主要分为两类:
Python 2.x的版本,被称为Python2,目前最新版是2.7.18
Python 3.x的版本,被称为Python3,目前最新版是3.9.1
从Python2到Python3是一次大版本升级,两者存在很多不兼容的地方。
当然,使用的时候最好选择较新的Python版本,越老的版本越难维护代码。
在维护旧版本的代码时,你需要了解版本之间的主要差异。有时候看一些代码的语法特征就可以大致猜出是什么版本
Python2和Python3之间的变化主要在以下几个方面
1.print函数:
Python 2:print是语句
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')?
2.整数相除:
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
3.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
4.异常处理:
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
5.xrange:
Python 2:有 range 和 xrange 两个方法
区别:
range返回一个list,在被调用的时候即返回整个序列
xrange 返回一个迭代器,每次循环生成序列的下一个数字
# 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 方法
6.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中也是同样的区别
7.不支持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'
以上是两个版本的区别。推荐新人学习Python3,这是未来的发展趋势。正在学习Python2的同学不用着急,记住以上知识点,就可以快速上手Python3!
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何知道python安装成功09/17
- ♥ 在python中使用round函数保留两位小数08/29
- ♥ python如何存储数据09/16
- ♥ 分分钟搞定JSON解析12/05
- ♥ 什么是python小整数池12/08
- ♥ python socket模块是如何使用的?11/25
内容反馈