python for 迭代器,迭代器和for循环

  python for 迭代器,迭代器和for循环

  迭代器:迭代器对象必须同时实现_ _ iterator _ _和__next__方法才能成为迭代器。对于迭代器,__iter__返回自身,__next__返回迭代器中的下一个值。最后,当没有元素时,抛出一个异常(开发者可以看到这个异常)。

  1.迭代器必须是可迭代对象,因为它实现__iter__()方法;(推荐学习:Python视频教程)

  2.iterator()方法(在类内部是__iter__)可以让迭代器返回迭代器。

  3.迭代器的__iter__方法返回自身,不产生新的迭代器对象。

  第三个性质是iterable对象可以重复迭代的原因(每次返回一个独立的迭代器,可以保证不同的迭代过程互不影响);迭代器只能遍历一次,因为它返回自身。

  for循环的工作机理

  当对象本身是迭代器时,For循环工作:

  调用__iter__方法,返回自身,即迭代器。不断调用迭代器的next()方法,一次按顺序返回迭代器中的一个值。当迭代结束时没有元素,异常StopIteration被抛出。

  在迭代对象中,for循环的工作机制是:

  首先确定对象是否是可迭代对象(相当于确定是否存在__iter__或__getitem__方法)。如果没有,直接报错,抛出TypeError异常。如果是,调用__iter__方法并返回一个迭代器。在python中,迭代器的__next__方法被不断调用,迭代器中的一个值一次被顺序返回。当迭代结束时没有元素,异常StopIteration被抛出。python会自己处理这个异常,不会向开发人员公开。

  此外,请注意python中的for循环实际上兼容两种机制:

  如果对象有__iter__,它将返回一个迭代器。如果对象没有__iter__,但实现了__getitem__,则使用下标迭代。__getitem__可以帮助对象获取和切片。

  当for发现没有__iter__但有__getitem__时,它将从0开始读取相应的下标,直到出现IndexError。这是一个旧的迭代协议。iter方法也将处理这种情况。当没有__iter__时,它将返回一个带下标迭代的iterator对象。一个重要的例子是str。一个字符串没有__iter__方法,但是它仍然可以被迭代,因为它在for循环中调用__getitem__方法。

  更多Python相关技术文章,请访问Python教程专栏学习!

  本文地址:http://itbyc.com/Python/22184.html

  请注明出处。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • shell中for循环语句,shell脚本中的for循环
  • shell中for循环语句,shell脚本中的for循环,shell中的for循环用法详解
  • js中for循环语句,js中for循环的两种语法
  • js中for循环语句,for循环语句js,JS中for循环的四种写法示例(入门级)
  • dos批处理命令操作,批处理命令循环语句,DOS 批处理命令For循环命令详解
  • c语言for循环语句用法,c语言中for循环语句详解
  • c语言for循环语句用法,c语言中for循环语句详解,C语言示例讲解for循环的用法
  • java中增强型for循环作用,java增强for循环的语法结构
  • java中增强型for循环作用,java增强for循环的语法结构,java增强for循环的实现方法
  • for循环打印菱形的程序框图,javafor循环输出菱形
  • for循环打印菱形的程序框图,javafor循环输出菱形,Java利用for循环打印菱形的实例教程
  • python for循环跳过,跳出多层for循环
  • python for循环跳过,跳出多层for循环,python跳出双层for循环的解决方法
  • python for循环递减,python for 数组
  • python用for循环排序,for语句并列执行顺序
  • 留言与评论(共有 条评论)
       
    验证码: