python2.x与3.x版本区别(二)
接着上篇博客中提到python2和pytho3的大致区别,本文将对其中具体的函数以及数据类型进行区分。
range和xrange
Python3中不再使用xrange方法,只有range方法
range在Python2中返回列表,而在Python3中返回range可迭代对象
输入:
a=range(10)
print(a)
print(list(a))
输出:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
True和False
True和False在Python2中是两个全局变量,数值上对应1和0,既然是变量就可以被赋值,但这样容易造成混乱;故在Python3中 True和False变为两个关键字,永远指向两个固定对象,不允许被重新赋值。
迭代器
Python2中很多返回列表对象的内置函数和方法在Python3中都改成了返回类似于迭代器的对象,迭代器的惰性求值特性使得操作大数据更加有效率。
字典对象dict.keys()、dict.values()方法都不再返回列表,而是生成一个类似迭代器的“view”对象返回。高阶函数map、filter、zip返回也都从列表变成了对象。Python2的迭代器必须实现next方法,二Python3改成了next。
nonlocal
在Python2中可以在函数中使用global声明变量为全局变量,但是给一个变量声明为非局部变量是无法实现的。在Python3,新增了关键字nonlocal,使得定义非jubu变量成为了可能。
next()函数和.next()方法
my_generator = (letter for letter in ‘abcdefg’)
python 2中可以用 next(my_generator) 和 my_generator.next() 两种方式。
python 3中只能用 next(my_generator)这种方式。