Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Yield 키워드:가이드

Python Yield 키워드를 사용하는 방법

제너레이터는 파이썬에서 가장 직관적인 개념이 아닙니다. 설상가상으로, 생성기 자체가 함수임에도 불구하고 "yield"라는 특수 키워드를 사용합니다. 수익 키워드는 무엇입니까? return 문과 어떻게 비교됩니까?

좋은 질문들입니다. 이 가이드에서는 yield 문이 무엇이며 코드에서 어떻게 사용할 수 있는지에 대해 설명합니다. 작동하는 yield 키워드의 예를 살펴보겠습니다. 시작하자!

계속하기 전에 Python 반복자와 생성기에 대한 기사를 읽는 것이 좋습니다. 이는 yield 키워드에 대한 이해를 높이는 데 사용할 수 있는 몇 가지 유용한 컨텍스트를 제공합니다.

기본으로 돌아가기:반복자와 생성기

목록은 반복 가능한 객체로 설명됩니다. "for" 루프를 사용하여 내용을 볼 수 있기 때문입니다. 루프가 실행될 때마다 목록의 항목은 Python에 의해 액세스됩니다. 사전, 튜플 및 문자열도 반복 가능한 객체입니다.

반복 가능한 개체에서 항목에 액세스하는 함수를 반복자라고 합니다. . 목록을 만들고 for 루프를 사용하여 반복해 보겠습니다.

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]

for p in peppers:
	print(p)
for p in peppers:
	print(p)

이 코드는 "고추" 목록에 있는 모든 고추를 콘솔에 출력합니다.

Scotch Bonnet
Piri Piri
Cayenne
Scotch Bonnet
Piri Piri
Cayenne

우리는 원하는 만큼 반복자를 사용합니다. 마지막 예에서 우리는 "고추" 객체를 두 번 반복했습니다.

Python 생성기는 객체를 반복하는 데 사용되는 반복기와 같습니다. 한 가지 큰 차이점이 있습니다. 생성기를 한 번만 반복할 수 있습니다. "고추"를 원하는 만큼 반복할 수 있는 반면, 제너레이터는 한 번만 액세스할 수 있습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

고추 목록에 대한 생성기를 정의해 보겠습니다.

def print_peppers(peppers):
	for p in peppers:
		yield p

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]
pepper_generator = print_peppers(peppers)

for p in pepper_generator:
	print(p)

print_peppers()라는 함수를 정의합니다. . 이것은 생성기 함수입니다. 하나의 인수를 수락합니다. 콘솔에 인쇄하려는 고추 목록입니다.

메인 프로그램에서는 print_peppers()를 호출합니다. 함수를 만들고 이를 변수 pepper_generator에 할당합니다. 다음으로 "for" 루프를 사용하여 생성기를 반복합니다. for 루프는 생성기 개체를 호출하고 반복합니다.

코드를 실행해 보겠습니다.

Scotch Bonnet
Piri Piri
Cayenne

출력은 첫 번째 예와 동일합니다. 차이점은 목록을 한 번만 반복할 수 있다는 것입니다. 생성기를 다시 반복해 보겠습니다.

...
for p in pepper_generator:
	print(p)
for p in pepper_generator:
	print(p)

코드 반환:

Scotch Bonnet
Piri Piri
Cayenne

우리는 생성기를 한 번 반복했습니다. 우리는 다시 할 수 없습니다. 이것이 두 번째 for 루프가 값을 반환하지 않는 이유입니다.

파이썬 수확량 키워드

마지막 예에서 "yield"라는 단어에 주목하십시오. 알림:

def print_peppers(peppers):
	for p in peppers:
		yield p

"yield" 키워드는 함수 내부에 나타납니다. 생성기 함수의 값을 반환합니다. "return" 키워드와 유사합니다.

반복할 수 있는 생성기를 만들려면 yield를 사용하십시오. 마지막 예에서는 yield를 사용하여 고추 목록에 대한 생성기를 만듭니다.

yield를 포함하는 모든 함수는 생성기를 반환합니다. type()을 사용하여 pepper_generator 변수의 유형을 확인하여 이를 확인합니다. 방법:

<class 'generator'>

이것은 print_peppers 함수가 할당된 pepper_generator가 생성기임을 알려줍니다.

결론

yield 키워드는 생성기 내부의 값을 반환합니다. 제너레이터는 값이 한 번만 반복될 수 있는 특수한 유형의 반복기입니다. yield 키워드는 return 문을 생성기에서 사용할 수 없다는 점을 제외하고는 return 문과 유사합니다.

이제 Pythonista처럼 yield 키워드를 사용할 준비가 되었습니다!