Python에서 "yield" 키워드는 무엇을 합니까?
Python의 "yield" 키워드는 특수 함수인 생성기 함수에 사용됩니다. 반복자 역할을 합니다.
생성기 함수 및 반복자
- 반복자: 한 번에 하나씩 일련의 값을 생성하는 개체.
- 생성자 함수: 특정 값 대신 반복자를 반환하는 함수. 그들은 "yield" 키워드를 사용하여 요청 시 값을 생성합니다.
"yield" 기능
생성기 함수가 호출되는 경우:
- 생성기 함수는 코드를 즉시 실행하지 않습니다.
- 대신, 생성기 개체를 반환합니다.
- 이 생성기 개체는 값을 생성하는 반복자입니다.
반복자가 'for' 루프에 사용되는 경우:
- 루프가 처음으로 "yield" 문을 만나면 생성기 함수가 실행을 재개하고 첫 번째 문을 생성합니다. value.
- 루프를 계속 반복하면 더 이상 값이 남지 않을 때까지 생성기 함수가 재개되어 다음 값을 생성합니다.
- 생성기 함수는 논리 끝에 도달하면 종료됩니다. 또는 "반품" 문을 발견했습니다.
예제 코드 설명
주어진 코드 조각은 노드 클래스 내에서 _get_child_candidates라는 생성기 함수를 정의합니다.
- 이 함수는 distance, min_dist 및 max_dist 매개변수를 사용합니다.
- 거리가 다음을 충족하면 왼쪽 및 오른쪽 하위 노드를 생성합니다. 기준.
- 기준을 충족하는 하위 항목이 더 이상 없으면 생성기 기능이 종료됩니다.
호출자 코드에서:
- 결과는 빈 값으로 초기화됩니다. list.
- 후보자는 현재 노드를 포함하는 목록으로 초기화됩니다.
- 루프는 후보를 반복합니다.
- 각 노드에 대해 거리를 확인하고 기준을 충족하면 해당 값을 결과에 추가합니다.
- 그런 다음 후보를 확장합니다. _get_child_candidates 생성기에서 얻은 하위 노드를 사용합니다.
- 루프는 모든 하위 노드가 완료될 때까지 계속됩니다.
생성기의 장점
- 메모리 효율성: 목록과 달리 생성기는 모든 값을 메모리에 저장하지 않습니다.
- 지연 평가: 생성기가 반복될 때만 값이 계산되므로 계산이 줄어듭니다.
- 반복에 대한 고급 제어: 생성기 함수 내의 논리를 사용하여 값 생성을 제어할 수 있습니다.
위 내용은 Python의 'yield' 키워드는 생성기 함수에서 효율적인 반복자를 어떻게 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!