def 로 시작하는 함수 안에 또 다른 하나의 def 로 시작하는 함수를 정의할 수 있는데요, 이때 함수 안에 정의된 또 다른 함수를 중첩 함수 (Nested Function) 이라고 합니다.
중첩 함수 (nested function)는 자신이 속한 원래 함수 안에서만 역할을 하며, 원래 함수의 밖에서는 인식이 안됩니다.
좋은 예시를 가져왔습니다.
def outer(num):
def inner(n): # nested function
result1 = n + 1
return result1
result2 = inner(num)**2
return result2
print(outer(10))
--------------------------
def outer(num):
def inner(n):
result1 = n + 1
return result1
result2 = inner(num)**2
return result2
print(inner(10)) # NameError: name 'inner' is not defined
중첩함수는 클로져를 구현하기 위해서 클로져 장점 클로져 내부 함수를 직접 고치지 않고 데코레이터를 통해서 수정을 할 수 있다.