调试程序的过程中发现断点处的for循环无法进入,这是为什么?是不是与前面的for语句打开了f文件有关,导致了number的输出为0
首先我们要弄清楚,这个可迭代的东西(也就是循环的这个东西),它这个到底是迭代器呢还是可迭代对象呢
迭代器呢,一次for循环就没有了,而可迭代对象呢,任你for一万次都会输出
通俗地讲就是类如果满足可迭代协议也就是有__iter__()的时候就可以成为可迭代对象,如果类有__iter__()和__next__()方法就可以称之为迭代器
或者更简单的说:
一个可迭代对象,不含__next__()方法,每次遍历都是将迭代对象转化为迭代器,遍历多少次就转化多少次。
而如果是迭代器呢,此时的遍历就是不断调用__next__()的过程,而这个过程是单向的,到最后一个元素时会抛出StopIteration异常终止此次遍历,迭代器用完了就没有了