Python基础-----迭代器协议和For循环机制

  • 迭代器协议:必须提供一个__next__()方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退)
  • 可迭代对象:遵循迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)
    for循环的本质:循环所有对象,全都是使用迭代器协议(循环调用 __next__()方法,直到循环所有对象为止)。

字符串、列表、元组、字典、集合、文件对象都没有__next__()方法,可以利用for循环,因为调用了他们的
__iter__()方法,此方法返回一个迭代器及包含__next__()方法的对象。

例如:

l = [1,2,3]

for i in l:   #该处相当于执行  l_iter = l.__iter__()  l_iter.__next__()并自动捕获
   print(i)  #StopIteration异常
    
next()方法其实在调用 __next__()方法

关于迭代对象、迭代器、生成器的详细解说请查看迭代器、可迭代对象、生成器详解

你可能感兴趣的:(Python基础-----迭代器协议和For循环机制)