파이썬
파이썬 클로저(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을 반환합니다.
이렇게 클로저를 사용하면 함수 내의 로컬 변수를 외부에서 접근하지 못하게 하고, 함수의 결과를 기억하고 재사용할 수 있습니다. 이를 통해 코드의 유연성과 가독성을 높일 수 있습니다.

반응형