태지쌤

로봇 & 코딩교육 No.1 크리에이터

파이썬

파이썬 클로저(closure)

태지쌤 2023. 3. 8. 17:51
반응형
def mul(m):           # 외부 함수
    def wrapper(n):   # 내부 함수 (클로저)
        return m * n
    return wrapper # 함수를 반환

if __name__ == "__main__":
    mul3 = mul(3)    # m = 3 인 wrapper 함수가 mul3 에 저장 
    mul5 = mul(5)    # m = 5 인 wrapper 함수가 mul5 에 저장

    print(mul3(10))  # m = 3, n = 10 인 wrapper 함수가 실행
    print(mul5(10))  # m = 5, n = 10 인 wrapper 함수가 실행

이 코드는 파이썬에서 클로저(closure)를 구현하는 예시입니다.

mul 함수는 인자로 정수 m을 받아, 내부 함수인 wrapper를 반환합니다. wrapper 함수는 인자로 정수 n을 받아, m * n을 반환합니다. wrapper 함수는 mul 함수의 로컬 변수인 m에 접근할 수 있기 때문에, mul 함수가 반환하는 wrapper 함수는 클로저(closure)입니다.

mul(3)과 mul(5)를 호출하여 반환된 wrapper 함수를 각각 mul3과 mul5 변수에 저장합니다. 이제 mul3과 mul5는 각각 m=3과 m=5인 클로저 함수입니다.

mul3(10)을 호출하면 m=3, n=10인 wrapper 함수가 실행되어 30을 반환합니다. 마찬가지로 mul5(10)을 호출하면 m=5, n=10인 wrapper 함수가 실행되어 50을 반환합니다.

이렇게 클로저를 사용하면 함수 내의 로컬 변수를 외부에서 접근하지 못하게 하고, 함수의 결과를 기억하고 재사용할 수 있습니다. 이를 통해 코드의 유연성과 가독성을 높일 수 있습니다.

 
 
반응형