// 1. 페이지의 에서 최대한 위에 이 코드를 붙여넣으세요. // 아래의 메타 태그를 복사해 사이트 홈페이지의 섹션에 붙여 넣어주세요. //2. 여는 태그 바로 뒤에 코드를 붙여넣으세요.

새소식

반응형
Python/Clean Code Series(클린코드)

(파이썬 클린코드) 제너레이터(Generator)

  • -
반응형

파이썬에서 제너레이터(generator)는 이터레이터(iterator)와 유사하지만, 이터레이터보다 더 강력하고 효율적인 함수입니다. 제너레이터는 값을 반환할 때마다 함수의 상태를 기억하고 다음 값 반환에 사용합니다.

 

제너레이터 함수는 yield 키워드를 사용하여 값을 반환합니다. 예를 들어, 0부터 시작하여 지정된 범위까지 모든 짝수를 반환하는 제너레이터 함수를 작성해 보겠습니다.

 

def even_numbers(n):
    for i in range(n):
        if i % 2 == 0:
            yield i
 

이 함수를 호출하면, 이터레이터 객체가 반환됩니다. 이 객체는 __next__() 메소드를 사용하여 값을 하나씩 가져올 수 있습니다.

evens = even_numbers(10)
print(next(evens)) # 0
print(next(evens)) # 2
print(next(evens)) # 4

 

또한, 제너레이터 함수를 for 루프에서 사용하여 간결하게 코드를 작성할 수 있습니다.

for even in even_numbers(10):
    print(even)

 

이 코드는 0부터 10까지의 모든 짝수를 출력합니다.

제너레이터는 무한한 수열을 다룰 때 특히 유용합니다. 예를 들어, 무한한 피보나치 수열을 생성하는 제너레이터 함수를 작성할 수 있습니다.

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

 

이 함수를 호출하여 피보나치 수열의 처음 10개 항목을 가져올 수 있습니다.

fib = fibonacci()
for i in range(10):
    print(next(fib))

 

이 코드는 다음과 같이 출력됩니다.

0
1
1
2
3
5
8
13
21
34
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.