> 백엔드 개발 > 파이썬 튜토리얼 > Python의 'yield' 키워드는 생성기 함수에서 효율적인 반복자를 어떻게 생성합니까?

Python의 'yield' 키워드는 생성기 함수에서 효율적인 반복자를 어떻게 생성합니까?

Barbara Streisand
풀어 주다: 2024-12-25 17:44:10
원래의
243명이 탐색했습니다.

How Does Python's `yield` Keyword Create Efficient Iterators in Generator Functions?

Python에서 "yield" 키워드는 무엇을 합니까?

Python의 "yield" 키워드는 특수 함수인 생성기 함수에 사용됩니다. 반복자 역할을 합니다.

생성기 함수 및 반복자

  • 반복자: 한 번에 하나씩 일련의 값을 생성하는 개체.
  • 생성자 함수: 특정 값 대신 반복자를 반환하는 함수. 그들은 "yield" 키워드를 사용하여 요청 시 값을 생성합니다.

"yield" 기능

생성기 함수가 호출되는 경우:

  • 생성기 함수는 코드를 즉시 실행하지 않습니다.
  • 대신, 생성기 개체를 반환합니다.
  • 이 생성기 개체는 값을 생성하는 반복자입니다.

반복자가 'for' 루프에 사용되는 경우:

  • 루프가 처음으로 "yield" 문을 만나면 생성기 함수가 실행을 재개하고 첫 번째 문을 생성합니다. value.
  • 루프를 계속 반복하면 더 이상 값이 남지 않을 때까지 생성기 함수가 재개되어 다음 값을 생성합니다.
  • 생성기 함수는 논리 끝에 도달하면 종료됩니다. 또는 "반품" 문을 발견했습니다.

예제 코드 설명

주어진 코드 조각은 노드 클래스 내에서 _get_child_candidates라는 생성기 함수를 정의합니다.

  • 이 함수는 distance, min_dist 및 max_dist 매개변수를 사용합니다.
  • 거리가 다음을 충족하면 왼쪽 및 오른쪽 하위 노드를 생성합니다. 기준.
  • 기준을 충족하는 하위 항목이 더 이상 없으면 생성기 기능이 종료됩니다.

호출자 코드에서:

  • 결과는 빈 값으로 초기화됩니다. list.
  • 후보자는 현재 노드를 포함하는 목록으로 초기화됩니다.
  • 루프는 후보를 반복합니다.
  • 각 노드에 대해 거리를 확인하고 기준을 충족하면 해당 값을 결과에 추가합니다.
  • 그런 다음 후보를 확장합니다. _get_child_candidates 생성기에서 얻은 하위 노드를 사용합니다.
  • 루프는 모든 하위 노드가 완료될 때까지 계속됩니다.

생성기의 장점

  • 메모리 효율성: 목록과 달리 생성기는 모든 값을 메모리에 저장하지 않습니다.
  • 지연 평가: 생성기가 반복될 때만 값이 계산되므로 계산이 줄어듭니다.
  • 반복에 대한 고급 제어: 생성기 함수 내의 논리를 사용하여 값 생성을 제어할 수 있습니다.

위 내용은 Python의 'yield' 키워드는 생성기 함수에서 효율적인 반복자를 어떻게 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿