Python itertools.islice的源代码在哪里?Python itertools.islice的源代码在哪里?
我发现itertoolsmodule.c,但找不到函数itertools.islice(也许它在那里,但我不太了解C代码)。
我想知道当我这样做会发生什么:
itertools.islice(spamreader, rowStart, rowFinish+1)
Python itertools.islice的源代码在哪里?Python itertools.islice的源代码在哪里?
我发现itertoolsmodule.c,但找不到函数itertools.islice(也许它在那里,但我不太了解C代码)。
我想知道当我这样做会发生什么:
itertools.islice(spamreader, rowStart, rowFinish+1)
您正在寻找老SVN仓库; Python已经转移到了mercurial。我会看他2.7 version of itertoolsmodule.c
;该来源有islice
object。
当您致电itertools.islice()
时,您将创建该对象的新实例,因此调用islice_new
。
使用3个参数,C结构中的next
设置为int(rowStart)
,stop
到int(rowFinish+1)
。 step
保留为None
,it
设置为iter(spamreader)
。最重要的是,cnt
设置为0
。然后该对象返回。
所有迭代工作都在islice_next()
完成,其中it
根据下一步,停止和步骤值进行迭代。
cnt
递增,并根据需要调用next(it)
以推进对象,直到cnt
等于或大于next
;之后,对islice_next()
的每个呼叫产生一个项目,而cnt
和next
递增直到达到stop
。
看起来像是在那里开始左右行1115左右 – mgilson
看1252行(构造函数在1118)。 –