관리 메뉴

Life goes slowly...

[Python] 파이썬 nested function 중첩 함수 본문

프로그래밍/Python

[Python] 파이썬 nested function 중첩 함수

빨강소 2020. 8. 9. 12:36
728x90
반응형

파이썬 중첩 함수 (Nested function)

파이썬 프로그래밍 함수 내부에 정의된 또 다른 선언된 함수를 말합니다.
파이썬 프로그래밍의 중첩 함수는 해당 함수가 선언된 함수 내에서 호출 및 반환이 가능합니다.
함수 안에 선언된 변수는 함수 안에서만 사용 가능합니다.

 

파이썬에서는 def로 시작하는 함수 안에 또 다른 하나의 def로 시작하는 함수를 정의하는데, 함수 안에 선언된 또 다른 함수를 중첩 함수(Nested Function)라고 합니다. 파이썬의 중첩 함수는 자기가 속한 원래 함수의 매개변수를 받아서 사용할 수 있으며 최종 결과 값을 반환하도록 합니다.

def outer_func():
    print('call outer_func function')
    
    //중첩 함수의 정의
    def inner_func():
        return 'call inner_func function'
    
    //중첩 함수 호출 
    print(inner_func())
    
outer_func()
call outer_func function
call inner_func function

 

파이썬의 중첩 함수는 함수 내부에서는 호출이 가능하지만 함수 외부에서는 내부에서 선언된 함수로 호출이 불가능합니다.

 

def outer_func():
    print('call outer_func function')
    
    //중첩 함수의 정의
    def inner_func():
        return 'call inner_func function'
    
    //중첩 함수 호출 
    print(inner_func())
    
inner_func()
line 11, in <module> 
inner_func()
NameError: name 'inner_func' is not defined

 

하지만 파이썬 프로그래밍 중첩 함수를 함수 외부에서도 호출 가능한 방법이 있습니다.
First-class function 함수나 Closure function 함수를 사용하여 호출 시 사용이 가능합니다.

def outer_func(num):
    //중첩 함수에서 외부 함수의 변수에 접근 가능
    def inner_func():
        print(num)
        return 'complex'
    
    return inner_func

fn = outer_func(10)    //First-class function
print(fn())            //Closure 호출 
728x90
반응형
Comments