tuc*_*son 2 python python-itertools
Python itertools.islice的源代码在哪里?
我找到了itertoolsmodule.c,但找不到函数itertools.islice(也许它就在那里,但我对C代码知之甚少).
我想了解当我这样做时会发生什么:
itertools.islice(spamreader, rowStart, rowFinish+1)
Run Code Online (Sandbox Code Playgroud)
您正在查看旧的SVN存储库; Python已经变得多变.我看看他的2.7版本itertoolsmodule.c ; 源有一个islice 对象.
当你打电话给itertools.islice()你时,创建一个该对象的新实例,因此islice_new被调用.
与3个参数,next在C结构被设置为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达到.