python 제너레이터, yield

yo·2020년 5월 15일
0

-제너레이터는 이터레이터 생성해주는 함수.
-이터레이터는 클래스에 iter, next, getitem등의 메서드 구현해야 하지만 제너레이터는 함수 안에서 yield 키워드만 사용하면 끝
-제너레이터(발생자)
-함수 안에서 yield사용하면 함수가 제너레이터되고, yield에는 값(변수)지정
yield 값

def number_generator():
    yield 0
    yield 1
    yield 2
    yield 3

for i in number_generator():
    print(i)
    
결과
0
1
2
3




def number_generator(stop):
    n = 0
    while n < stop:
        yield n
        n += 1
g = number_generator(5)

결과
0
1
2
3
4
def upper_generator(x):
    for i in x:
        yield i.upper()

fruits = ['apple', 'pear', 'blueberry']

for i in upper_generator(fruits):
    print(i)
    
 결과
 APPLE
PEAR
BLUEBERRY

yield from으로 값 여러 번 바깥으로 전달하기

yield from 반복가능한객체
yield from 이터레이터
yield from 제너레이터객체
def number_generator():
    x = [1,2,3]
    yield from x

for i in number_generator():
    print(i)
    
결과
1
2
3

yield from에 제너레이터 객체 지정하기

def number_generator(stop):
    n = 0
    while n < stop:
        yield n
        n += 1

def three_generator():
    yield from number_generator(3)

for i in three_generator():
    print(i)

결과
0
1
2
profile
Never stop asking why

0개의 댓글