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)
, stop
to 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
达到。