본문 바로가기
Python

[Python] Nested Function

by ds31x 2023. 7. 15.

nested는 중첩이라고 불리며 일반적으로 2중 loop등을 지칭할 때 사용되는 용어임.

 

nested function이란,

  • `for`문 안에 `for`문이 중첩되어 2중 loop를 구성하는 것처럼,
  • function 내부에서 function을 정의(선언)하는 것을 가르킴.
  • 때문에 inner function이라고도 불림.

다음 예를 보면 쉽게 알 수 있음.

def ex_func(j):

    def nested_func(i):
        return i ** 2
        
    for c in range(j):
        print(nested_func(c))


lambda function과 비슷한데,

  • 보다 복잡한 구현이 필요할 때 nested function 이 사용되고,
  • 1줄 수준의 간단한 구현인 경우 lambda expression이 사용된다.

2023.07.07 - [Python] - [Python] lambda expression and map, filter, reduce.

 

[Python] lambda expression and map, filter, reduce.

Python 에서 lambda function (or lambda expression)은 anonymous function(익명함수)를 만드는데 사용됨. function 형태로 code구현의 재사용을 해야하긴하지만, def문등을 이용하여 만들기에는 너무 간단한 경우 등

ds31x.tistory.com


주로 단순한 코드가 반복되는 경우에 사용되어 가독성을 높이는데 사용되며, 

first-class object 개념과 함께, clousre와 같은 디자인패턴을 구현하는데 사용됨.

 

C언어에 익숙한 개발자의 경우, Python등에서 nested function을 보면 상당히 어색하다.
개인적으로 tuple을 이용한 a,b = b,a 로 두 변수의 값을 swap하는 것과 함께
가장 어색했던 게 nested function이었음.

2023.07.15 - [Python] - [Python] Closure

 

[Python] Closure

Closure의 정의는 다음과 같음. Nested function 으로, 자신의 enclosing scope (= Python에서 non-local scope)의 상태값(lexcical environment의 variable 값)을 기억하고 유지, 변경, 사용할 수 있는 경우를 가르킴. 2023.07.1

ds31x.tistory.com

 

728x90

'Python' 카테고리의 다른 글

[Python] Closure  (0) 2023.07.15
[Python] scope와 키워드 global, nonlocal  (0) 2023.07.15
[Python] first-class object (일급객체)  (0) 2023.07.15
[Python] Callback function  (0) 2023.07.13
[Python] overloading, overriding, and special methods  (0) 2023.07.13