Python itertools.islice 的源代码在哪里?
我找到了itertoolsmodule.c,但找不到函数 itertools.islice (也许它在那里,但我对 C 代码了解不多)。
我想了解当我这样做时会发生什么:
itertools.islice(spamreader, rowStart, rowFinish+1)
Python itertools.islice 的源代码在哪里?
我找到了itertoolsmodule.c,但找不到函数 itertools.islice (也许它在那里,但我对 C 代码了解不多)。
我想了解当我这样做时会发生什么:
itertools.islice(spamreader, rowStart, rowFinish+1)
您正在查看旧的 SVN 存储库;Python 从此转向了 mercurial。我会看看他的 2.7 版本itertoolsmodule.c;源有一个islice 对象。
当您调用时,itertools.islice()您会创建该对象的新实例,因此islice_new调用。
使用 3 个参数,next在 C 结构中设置为int(rowStart), stopto int(rowFinish+1)。step保留为None,it设置为iter(spamreader)。最重要的cnt是,设置为0. 然后返回对象。
所有的迭代工作都在 中完成islice_next(),其中it根据 next、stop 和 step 值进行迭代。
cnt递增并next(it)根据需要调用以推进对象,直到cnt等于或大于next; 之后,每次对islice_next()项目的调用都会产生 whilecnt并next递增,直到stop达到。