Python 2 和 Python 3 的一些主要区别(2)

  在 Python2 中很多返回列表对象的内置函数和方法在 Python 3 都改成了返回类似于迭代器的对象,因为迭代器的惰性加载特性使得操作大数据更有效率。Python2 中的 range 和 xrange 函数合并成了 range,如果同时兼容2和3,可以这样:

  try:无锡妇科医院

  range = xrange

  except:

  pass

  另外,字典对象的 dict.keys()、dict.values() 方法都不再返回列表,而是以一个类似迭代器的 "view" 对象返回。高阶函数 map、filter、zip 返回的也都不是列表对象了。Python2的迭代器必须实现 next 方法,而 Python3 改成了 __next__

  nonlocal

  我们都知道在Python2中可以在函数里面可以用关键字 global 声明某个变量为全局变量,但是在嵌套函数中,想要给一个变量声明为非局部变量是没法实现的,在Pyhon3,新增了关键字 nonlcoal,使得非局部变量成为可能。

  def func():

  c = 1

  def foo():

  c = 12

  foo()

  print(c)

  func() #1

  可以对比上面两段代码的输出结果

  def func():

  c = 1

  def foo():

  nonlocal c

  c = 12

  foo()

  print(c)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b344f7505153ff5df286abb9ef3fe769.html