python3和python2的(语法)区别:
开始...
print:
print('hello word') # 3
print 'hello word' # 2
input:
input('请输入:') # python2中的input()函数:获取当前输入的内容,并将其作为指令来处理
input('请输入:') # python3中的input()函数:获取当前输入的内容,并将其作为字符串来处理
raw_input() # 就是在python2让input函数实现python3中相同的功能
整数除法:
Python 2将小数点后面没有任何数字的数字视为整数,这可能会导致在除法期间出现意外结果。
例如,如果在Python 2代码中输入表达式:3/2,则评估结果将为1,而不是你所期望的1.5。
这是因为Python 2会假设你希望除法的结果为整数,因此它将计算向下舍入到最接近的整数。
为了获得结果1.5,你必须编写3.0 / 2.0来告诉Python,你希望它返回一个浮点数,即在结果中包含小数点后面的数字。
Python 3则会默认将3/2评估为1.5,这对于新程序员来说有更直观的感受。
Unicode字符串:
默认情况下,Python 3是将字符串存储为Unicode,
而如果Python 2要将字符串存储为Unicode,则要求使用“u”标记字符串。
Unicode字符串比ASCII字符串更通用,它们都是Python 2的默认字符串,
因为它们可以存储来自外语的字母以及表情符号和标准的罗马字母和数字。
如果要确保Python 3代码与Python 2兼容,你仍然可以使用“u”来标记Unicode字符串。
抛出异常:
Python 2和Python 3两个版本的错误处理有一个小的变化。
在python 3.x中,'as'关键字是必需的。例:
python2代码:
try:
trying_to_check_error
except NameError, err:
print err, 'Error Caused' # 不能在Python 3中工作
python3代码:
try:
trying_to_check_error
except NameError as err: # 'as' 是 Python 3.x 必需的存在的关键字
print (err, 'Error Caused')
xrange:
Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],
而xrange返回一个xrange对象,即xrange(3)返回iterator对象,它与Java迭代器类似,并在需要时生成数字。
如果我们需要多次迭代相同的序列,我们更喜欢range(),因为range提供了一个静态列表。xrange()每次重建序列。
xrange()不支持切片和其他列表方法。xrange()的优点是,当任务迭代大范围时,它可以节省内存。
在Python 3.x中,范围函数现在执行xrange在Python 2.x中的功能,因此为了保持代码的可移植性,我们可能希望坚持使用范围。
所以Python 3.x的范围函数是来自Python 2.x的xrange。