yield
을 함수 본문에 넣으면 분명합니다. 그러나 그것은 내가 구하려고 노력하는 것이 아닙니다. 나는 모두를 실행하면파이썬은 생성기를 언제 돌려 줄 것인지 어떻게 알 수 있습니까?
def myGenerator():
yield 42
def myFunction():
return 42
내가 참조 : 다음 myGenerator
및 myFunction
개체를 검사하는 경우
>>> myGenerator()
<generator object myGenerator at 0xb7bf511c>
>>> myFunction()
42
하지만, 난 정말 다른 아무것도 표시되지 않습니다 : 대화 형 인터프리터에서 두 가지 간단한 기능을 감안할 때
for attr in dir(myFunction):
print(attr, getattr(myFunction, attr)
은 myGenerator
과 같은 모양을 만듭니다. 인터프리터가 함수 호출을 생성기로 랩핑할지 여부를 분별하기 위해 함수 객체의 내부에 숨겨진 마술 비트가 있습니까? 또는 yield 키워드의 존재로 인해 일부 생성기 마술에 포장 된 'myGenerator'
이라는 개체가 바인딩되는 더 많은 데코레이터 스타일이 완료 되었습니까? 또는 다른 것...?
대답 여기 PEP에서
: http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained – manji