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)。 –