可迭代对象,迭代器,迭代如何理解? | python

  可迭代对象指的是,对象具有__iter__,或者__getiter__方法(dir(object));

  迭代器指的是,对象具有__next__方法;

  迭代,指的是一个过程,比如for循环;

问题:字符串是可迭代对象,但不是迭代器,却可以通过for循环遍历?

解答:字符串string具有__iter__方法,而没有__next__方法,所以,next("hello world"),会报错;

    但是,for循环又是一个不断next(),直到"超出"异常被处理时停止的过程,为什么字符串可以遍历呢?

    因为__iter__方法被执行之后,会返回一个迭代器,如此就可以通过for循环遍历字符串了;

其他:python提供一个iter()内置函数来执行对象的__iter__方法:

>>> str_test = "abc"
>>> next(str_test)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not an iterator
>>> next(iter(str_test))
'a'

猜你喜欢

转载自www.cnblogs.com/pymkl/p/9294577.html