클로저

클로저는 함수의 재사용성을 사용하여 만든 함수입니다. python의 디자인 패턴과 관련된 요소로서 단순히 python에서만 쓰이는 것이 아닌 다른 언어에서도 디자인 패턴이 존재합니다.

입력

def 승수(x, y):
    return x ** y

print(승수(2, 3))
print(승수(3, 2))
print(승수(4, 3))

출력

8
16
32

그런데 이 함수를 굉장히 많이 사용할 것이라 하나의 패턴으로 패턴화 하고 싶다면 어떻게 해야할까요?

입력

def 승수(n):
  def 함수(x):
    return x ** n
  return 함수

a = 승수(3) #a는 승수라는 함수를 가지게 됩니다.
b = 승수(4)
c = 승수(5)
a(2) #
b(2)
c(2)

출력

8
16
32

이렇게 함수의 재사용성을 좀 더 다르게 해서 만든 것이 closer입니다.