Python의 yield 키워드
이 튜토리얼은 파이썬에서yield
키워드의 목적과 사용을 설명합니다. yield
키워드는 Python에서 생성기 함수를 정의하는 데 사용되는 Python 문입니다. yield
문은 함수 본문 내에서만 사용할 수 있습니다.
제너레이터 함수와 일반 함수의 주요 차이점은 제너레이터 함수에return
문 대신yield
표현식이 포함되어 있다는 것입니다. yield
문은 생성기 반복 자라고하는 일련의 값을 출력으로 생성합니다. 반복기에서 새 값은next()
함수 또는for
루프를 사용하여 검색 할 수 있습니다.
next()
함수가 호출 될 때마다 또는for
루프가 반복 될 때마다yield
문은 새 값을 생성하거나 생성하고 함수의 위치 실행 상태, 즉 지역 변수의 값을 저장합니다. 등. 각 새next()
함수 호출 또는 반복에서yield
문은 각 호출에서 시작되는return
문과 달리 마지막 저장된 상태에서 다시 시작됩니다.
Python에서yield
키워드의 예제 코드
yield
문의 작업이 명확하므로 이제 사용 및 예제 코드를 살펴 보겠습니다. 많은 양의 데이터가 있고 한 번에 반복 가능한 객체로로드 할 수 없거나 데이터를 읽는 데 메모리 효율적인 방법을 원한다고 가정합니다. yield 문을 사용하여 생성기 함수를 만들 수 있습니다. 함수는 각 반복 또는next()
함수 호출에서 새 데이터 청크를 읽고 생성합니다.
아래 예제 코드는for
루프와 함께yield
문을 사용하여 Python에서 간단한 생성기 함수를 만드는 방법을 보여줍니다. 아래 예제 코드에서 생성기 함수my_generator()
는1
에서100
까지의 새 번호를 생성하고99
호출까지 작동합니다.
def my_generator():
for x in range(1, 100):
print("new value is generated!")
yield x
next()
함수를 사용하거나 반복을 통해 값을 생성하려면 먼저 생성기 반복기 객체가 필요합니다.
gen_iter = my_generator()
이제next()
함수를 사용하여 생성기 반복기에서 새 값을 가져옵니다. 아래 예제 코드에서와 같이next()
함수를iterator.__next__()
로 사용할 수도 있습니다.
val = next(gen_iter)
print("Value =", val)
val = gen_iter.__next__()
print("Value =", val)
출력:
new value is generated!
Value = 1
new value is generated!
Value = 2
새 값을 얻는 다른 방법은for
루프를 사용하여 생성기 반복기 객체를 반복하는 것입니다. 아래 예제 코드는 Python에서 생성기 반복기 객체를 반복하는 방법을 보여줍니다.
for val in gen_iter:
print("Value =", val)
위의 코드 예제는 생성기 함수의 지정된 범위에서 모든99
값을 생성합니다.
아래 예제 코드에 설명 된대로yield
문을 여러 번 사용하여for
루프없이 생성기 함수를 만들 수도 있습니다.
def my_generator():
x = 1
print("new value is generated!")
yield x
x = x + 1
print("new value is generated!")
yield x
x = x + 1
print("new value is generated!")
yield x
이제 새로운 생성기 함수를 사용하여for
루프를 사용하여 모든 값을 생성 해 보겠습니다.
gen_iter = my_generator()
for val in gen_iter:
print("Value =", val)
출력:
new value is generated!
Value = 1
new value is generated!
Value = 2
new value is generated!
Value = 3