2013-09-27 2 views
2

파이썬 itertools.islice의 소스 코드는 어디에 있습니까?파이썬 itertools.islice의 소스 코드는 어디에 있습니까?

나는 itertoolsmodule.c을 찾았지만 itertools.islice 함수를 찾을 수 없습니다 (어쩌면 거기에 있지만, C 코드에 대해 많이 알지 못합니다).

내가 할 때 발생하는 이해하고 싶습니다 : 당신은 기존의 SVN 저장소에서 찾고있다

itertools.islice(spamreader, rowStart, rowFinish+1) 
+0

1115 정도의 행을 시작하는 것처럼 보입니다. – mgilson

+0

라인 1252 (1118의 생성자)를 살펴보십시오. –

답변

7

; 파이썬은 이후 수은으로 옮겼습니다. 나는 그를 보았습니다 2.7 version of itertoolsmodule.c; 출처는 isliceobject입니다.

itertools.islice()을 호출하면 해당 개체의 새 인스턴스가 만들어 지므로 islice_new이 호출됩니다.

3 인수를 사용하면 C 구조체의 nextint(rowStart), stop에서 int(rowFinish+1)으로 설정됩니다. stepNone으로, ititer(spamreader)으로 설정됩니다. 가장 중요한 것은 cnt0입니다. 그런 다음 객체가 반환됩니다.

모든 반복 작업은 islice_next()에서 수행되며 여기서 it은 다음 정지 및 단계 값에 따라 반복됩니다.

cntcntnext 이상이 될 때까지 객체를 전진시키기 위해 필요에 따라 증가되고 next(it)이 호출됩니다. 그 후에 islice_next()에 대한 각 호출에 대해 cntnext이 증가되고 stop에 도달 할 때까지 항목이 생성됩니다.