티스토리 뷰

공부/Python

Python Closure 함수

Bism 2016. 12. 15. 16:22
함수안에 또 다른 함수가 선언되어 반환되는 것을 클로저 함수라고 한다. 
  - 전역변수를 사용하지 않고 지역변수를 함수 밖에서 계속 참조 가능
  - 내부 데이터의 은닉에 활용
  객체 처리 효과를 사용할 수 있다

파이썬에서 클로저를 만들기 위한 조건

   -. 중첩 함수(Nested Function)를 갖는다.

   -. 중첩 함수는 자신을 감싸고 있는 함수 영역(부모함수)의 변수를 참조하고 있다.

   -. 부모함수는 중첩 함수(자식 함수)를 반환한다.


예제) 1 ~ 10 사이의 숫자가 입력되면 list type의 변수에 입력 값을 기억하고, 그 값을 유지하기


def outf(a,b):

    li = []                   #set type을 사용한다면 li = {0} 값이 하나라도 있어야 함

    def inf(x):

        if a <= x <= b:

            li.append(x)    #li.add(x)

        return li

    return inf    #내부함수를 반환함으로 해서 클로저 기능이 수행된다.


f1 = outf(1, 10)    #외부함수로 숫자의 범위 입력

print(f1(2))         #범위 내의 수는 li에 기억 - 클로저에 의해 함수 내의 변수를 함수 밖에서 참조가 가능해 짐.

print(f1(1))

print(f1(13))       #범위 외의 수는 li에 기억하지 않음

print(f1(5))

a = f1(5)

print('중복자료 제거하기---------')

print(a)

b=set(a)

a=list(b)

print(a)

'공부 > Python' 카테고리의 다른 글

print() 함수에 서식 적용하기  (0) 2016.12.15
Python Semaphore(Thread)  (0) 2016.12.15
HTML 파싱 라이브러리 BeautifulSoup  (0) 2016.12.15
PyQt  (0) 2016.12.15
Numpy, Scipy, Pandas, Matplotlib 설치  (0) 2016.11.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함