Python의 생성기 함수에서 한 번에 하나의 값을 얻는 방법은 무엇입니까?


113

매우 기본적인 질문-Python의 생성기에서 하나의 값을 얻는 방법은 무엇입니까?

지금까지 작성하여 얻을 수 있음을 발견했습니다 gen.next(). 이것이 올바른 방법인지 확인하고 싶습니까?

답변:



66

Python <= 2.5에서는 gen.next(). 이것은 모든 Python 2.x 버전에서 작동하지만 Python 3.x에서는 작동하지 않습니다.

Python> = 2.6에서는 next(gen). 이것은 내장 기능이며 더 명확합니다. Python 3에서도 작동합니다.

이 두 가지 모두 next()하위 클래스로 재정의 할 수 있는 특수 이름의 함수를 호출합니다 . 그러나 Python 3에서이 함수는 __next__()다른 특수 함수와 일치하도록 로 이름이 변경되었습니다 .


16

사용 (파이썬 3 용)

next(generator)

다음은 예입니다.

def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)

인쇄해야

0
1


2

파이썬 3 이상에서 생성기 객체와 관련된 값을 얻으려면 next(<your generator object>). next ()에 대한 후속 호출은 대기열에 연속적인 객체 값을 생성합니다.


1

파이썬 3에서는 .이 gen.next()없지만 next(gen). 당신이 저에게 물어 보면 약간 기이하지만 그것이 방법입니다.


1
그다지 이상하지 않습니다. Python 3은 문제를 해결하고 더 명확한 코드 만 허용합니다. 이전 버전과의 호환성이 없다는 것이 몇 가지 주요 변경 사항의 요점입니다.
Tatarize
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.