반응형
Python 3.0에서 generator.next ()가 표시됩니까?
예를 들어 시리즈를 생성하는 생성기가 있습니다.
def triangleNums():
'''generate series of triangle numbers'''
tn = 0
counter = 1
while(True):
tn = tn + counter
yield tn
counter = counter + 1
파이썬 2.6에서는 다음과 같은 호출을 할 수 있습니다.
g = triangleNums() # get the generator
g.next() # get next val
그러나 3.0에서 동일한 두 줄의 코드를 실행하면 다음 오류가 발생합니다.
AttributeError: 'generator' object has no attribute 'next'
그러나 루프 반복기 구문은 3.0에서 작동합니다.
for n in triangleNums():
if not exitCond:
doSomething...
3.0의 동작 차이를 설명하는 내용을 아직 찾을 수 없었습니다.
수정, g.next()
이름이 변경되었습니다 g.__next__()
. 그 이유는 일관성입니다. 같은 방법 __init__()
과 __del__
모두 같은 특수 방법 에는 이중 밑줄 (또는 현재 용어에서 "지우기")이 있으며 .next()
해당 규칙에 대한 몇 가지 예외 중 하나였습니다. 이것은 파이썬 3.0에서 수정되었습니다. [*]
그러나 g.__next__()
Paolo가 말한 것처럼 을 호출하는 대신을 사용하십시오 next(g)
.
[*]이 수정 사항을받은 다른 특수 속성이 있습니다. func_name
지금, __name__
등
시험:
next(g)
2와 3 사이의 구문 차이를 보여주는 이 깔끔한 테이블 을 확인하십시오 .
코드가 Python2 및 Python3에서 실행되어야하는 경우 다음 과 같이 2to3 6 라이브러리를 사용하십시오 .
import six
six.next(g) # on PY2K: 'g.next()' and onPY3K: 'next(g)'
참고 URL : https://stackoverflow.com/questions/1073396/is-generator-next-visible-in-python-3-0
반응형
'IT story' 카테고리의 다른 글
HTML 이메일 렌더링 테스트 (0) | 2020.04.20 |
---|---|
jQuery를 사용하여 요소의 제목 속성을 변경하는 방법 (0) | 2020.04.20 |
텍스트를 80 열로 재구성 / 강제하는 vim 명령 (0) | 2020.04.20 |
iframe을 다시로드 / 새로 고치는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.20 |
클립 : : 오류 : : 누락 요구 사항 유효성 검사기 레일 4 오류 (0) | 2020.04.20 |