반응형
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을 반환합니다.
이렇게 클로저를 사용하면 함수 내의 로컬 변수를 외부에서 접근하지 못하게 하고, 함수의 결과를 기억하고 재사용할 수 있습니다. 이를 통해 코드의 유연성과 가독성을 높일 수 있습니다.
반응형
'파이썬' 카테고리의 다른 글
인덱싱 슬라이싱 위치 이미지 (0) | 2023.03.14 |
---|---|
파이썬 데코레이터(decorator) (0) | 2023.03.08 |
ChatGPT로 파이썬 코드 생성하기 (2) | 2023.03.03 |
네이버웨일북에 파이참pycharm 설치하고 실행하기 (0) | 2023.03.01 |
pip install 패키지 설치했는데 파이참에서 인식 못하는 경우 (0) | 2023.03.01 |