Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 중첩 함수(Nested Function) 작동 원리 완벽 가이드

파이썬 중첩 함수란?

중첩 함수(nested function)는 하나의 함수 내부에 또 다른 함수가 정의된 형태를 말합니다. 파이썬에서는 외부 함수 안에 정의된 내부 함수가 외부 함수의 지역 변수, 즉 둘러싸는 스코프(enclosing scope)의 변수에 접근할 수 있다는 중요한 특징이 있습니다. 이러한 동작 방식은 클로저(closure) 개념과도 밀접하게 연관되어 있습니다.

중첩 함수 예제 코드

다음 예제를 통해 중첩 함수의 작동 방식을 직접 확인해 보겠습니다.

def mulFunc(num1):
    def mul(num2):
        return num1 * num2
    return mul

res = mulFunc(15)
# 아래 코드는 20 * 15 = 300을 출력합니다.
print(res(20))

실행 결과와 단계별 설명

위 코드를 실행하면 num1(15)과 num2(20)의 곱인 300이 출력됩니다. 작동 과정을 단계별로 살펴보면 다음과 같습니다.

  1. mulFunc(15)가 호출되면 내부 함수 mul이 정의된 후 반환됩니다.
  2. 반환된 함수는 res 변수에 저장되며, 이 시점에 외부 함수의 지역 변수 num1 = 15 값이 함께 기억됩니다.
  3. res(20)을 호출하면 내부 함수가 외부 스코프의 num1 값에 접근하여 20 × 15를 계산하고 결과를 반환합니다.

기억해야 할 핵심 포인트

  • 내부 함수는 자신이 정의된 외부 함수의 지역 변수에 자유롭게 접근할 수 있습니다.
  • 외부 함수의 실행이 끝난 후에도 내부 함수는 해당 변수들의 값을 기억하며, 이것이 클로저의 핵심 원리입니다.
  • 중첩 함수는 데코레이터(decorator) 구현, 팩토리 함수 작성 등 실무에서 폭넓게 활용됩니다.