ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 중첩 함수(Nested Function)
    언어/파이썬 2021. 1. 24. 23:11

    중첩함수란 함수 내에 위치한 또 다른 함수로, 바깥에 위치한 함수들과 달리 부모 함수의 변수를 자유롭게 읽을 수 있다. 실무 보다는 단일 함수로 해결해야하는 경우가 잦은 코테에서 매우 자주 쓰인다. 

    nested function

    여기서 outer_function()은 inner_function을 호출했고, 아무런 파라미터도 넘기지 않았지만 부모 함수의 text 변수를 자유롭게 읽어 들여 그 값인 "Hello"를 출력했다. 이처럼 매번 파라미터를 전달하지 않아도 되기 때문에 구현이 깔끔해진다는 장점이 있다.  또한 가변 객체(list, dict, set)인 경우 append(), pop(), 원소 변경(a[i][j] = 1)등 여러가지 연산으로 조작도 가능하다. 

    그러나 재할당(=)이 일어날 경우 참조 ID가 변경되어 별도의 로컬 변수로 선언된다.

     

    연산자 조작

    리스트는 가변객체이므로, 이처럼 중첩 함수내에서 b.append(4)와 같은 형태로 append() 메소드를 사용해 변수를 조작할 수 있다. 이렇게 조작된 값은 부모 함수에서도 그대로 적용된다.

     

    재할당

     

    여기서는 불변 객체인 문자형을 예시로 들었다. 문자열은 불변 객체이기 때문에 조작할 수 없다. 값을 변경하려면 text ="word"와 같은 경우형태로 새롭게 재할당 할 수 밖에 없다. 그결과 id 값을 확인해보면 inner_function1과 outer_function에서의 text의 의 id 값은 서로 다른것임을 알 수 있다. 

    '언어 > 파이썬' 카테고리의 다른 글

    bisect  (0) 2021.03.08
    Variable Scope  (0) 2021.01.30
    가변객체 불변객체  (0) 2021.01.24
    파이썬은 왜 느릴까?  (0) 2021.01.21
    우선순위 큐  (0) 2021.01.21

    댓글