Python의 yield 키워드

Muhammad Waiz Khan 2023년10월10일
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

관련 문장 - Python Keyword