본문 바로가기
파이썬

파이썬 2주 5일차

by 현돌스 2023. 3. 3.
반응형


제너레이터, 데코레이터, 컨텍스트 매니저는 파이썬에서 각각 효율적이고 표현력 있는 코드를 작성할 수 있게 해주는 강력한 기능입니다. 이들 기능에 대한 개요와 파이썬에서 사용하는 방법을 살펴보겠습니다.

제너레이터 (Generators)

제너레이터는 리스트나 튜플과 같은 반복 가능한(iterable) 객체입니다. 하지만 리스트와는 달리, 제너레이터는 모든 값을 한 번에 메모리에 저장하지 않습니다. 대신, 값이 필요할 때마다 값을 생성합니다. 이렇게 하면 대용량 데이터와 같은 경우에 매우 메모리 효율적인 방법으로 데이터를 처리할 수 있습니다.

다음은 제너레이터 함수를 작성하는 방법의 예입니다.


def my_generator():
    for i in range(10):
        yield i

이 함수는 yield 키워드를 사용하여 호출될 때마다 값을 반환합니다. 이 제너레이터를 사용하려면 다음과 같이 반복문을 사용할 수 있습니다.


for i in my_generator():
    print(i)

이렇게 하면 숫자 0에서 9까지 출력됩니다.

데코레이터 (Decorators)

데코레이터는 다른 함수의 동작을 수정하는 함수입니다. 데코레이터는 함수를 입력받아 어떤 방식으로든 수정한 다음 수정된 함수를 반환합니다.

다음은 함수가 실행되는 시간을 출력하는 데코레이터의 예입니다.


import time

def timing_decorator(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"걸린 시간: {end - start:.2f} 초")
        return result
    return wrapper

이 데코레이터를 사용하려면, @ 기호를 사용하여 함수에 데코레이터를 적용하면 됩니다.


@timing_decorator
def my_function():
    time.sleep(2)

이렇게 하면 my_function이 실행되는 데 걸린 시간이 출력됩니다.

컨텍스트 매니저 (Context Managers)

컨텍스트 매니저는 파이썬에서 리소스를 관리하는 방법입니다. 이를 사용하면 수동적인 개입 없이 자동으로 리소스를 할당하고 해제할 수 있습니다.

다음은 파일을 열고 닫는 컨텍스트 매니저의 예입니다.


class File:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        self

파일을 열고 닫는 컨텍스트 매니저의 예입니다.


class File:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_value, traceback):
        self.file.close()

이 클래스를 사용하려면, with 키워드를 사용하여 파일을 열고 닫습니다.


with File("my_file.txt", "w") as f:
    f.write("Hello, World!")

이렇게 하면 "Hello, World!" 문자열이 my_file.txt 파일에 작성됩니다.

이상으로, 파이썬에서 제너레이터, 데코레이터, 컨텍스트 매니저를 사용하는 방법에 대해 간단히 알아보았습니다. 이들 기능은 각각 메모리 효율성, 코드 재사용성 및 리소스 관리 기능을 제공하여 파이썬 프로그래밍을 효율적으로 만드는데 큰 역할을 합니다.

'파이썬' 카테고리의 다른 글

파이썬 3주 2일차  (0) 2023.03.07
파이썬 3주 1일차  (0) 2023.03.06
파이썬 2주 4일차  (0) 2023.03.02
파이썬 2주 3일차  (0) 2023.03.01
Tesorflow LSTM  (0) 2023.03.01

댓글