Python2 和 Python3的区别
Python 2 和 Python 3 是 Python 语言的两个主要版本,它们之间有很多重要的区别。Python 3 在设计时没有考虑向后兼容,因此许多在 Python 2 中有效的代码在 Python 3 中需要修改才能运行。以下是一些主要的区别:
打印函数:
Python 2 中
print
是一个语句,例如:print "Hello World"
Python 3 中
print
是一个函数,需要括号:print("Hello World")
整数除法:
Python 2 中
3 / 2
的结果是1
(整数除法)。Python 3 中
3 / 2
的结果是1.5
(浮点数除法),而整数除法使用//
。
Unicode 支持:
Python 2 默认使用 ASCII 编码,字符串有
str
和unicode
两种类型。Python 3 默认使用 Unicode 编码,字符串只有
str
类型(Unicode),而字节串是bytes
类型。
xrange 和 range:
Python 2 有
range()
(返回列表)和xrange()
(返回迭代器)。Python 3 中只有
range()
,返回一个可迭代对象,类似于 Python 2 的xrange()
。
语法和异常:
Python 3 中捕获异常的语法改为
except Exception as e
,而 Python 2 中可以是except Exception, e
。Python 3 要求更严格的缩进和语法,例如,不能混合使用空格和制表符。
输入函数:
Python 2 中
input()
函数会计算输入字符串并返回相应类型,而raw_input()
返回字符串。Python 3 中只有
input()
,且始终返回字符串。
迭代器:
Python 3 中很多返回列表的函数改为返回迭代器,例如
map()
、filter()
、zip()
,如果需要列表,可以使用list()
转换。
类:
Python 3 中类默认都是新式类(继承自
object
),而 Python 2 中需要显式继承。
字典键的顺序:
Python 3.6 及以上版本中,字典保持插入顺序,而 Python 2 中字典是无序的。
性能改进:
Python 3 在性能上有许多改进,例如对字符串和字节码的优化。
由于 Python 2 已于 2020 年 1 月 1 日停止支持,因此建议新项目使用 Python 3。