티스토리 뷰
함수안에 또 다른 함수가 선언되어 반환되는 것을 클로저 함수라고 한다.
- 전역변수를 사용하지 않고 지역변수를 함수 밖에서 계속 참조 가능
- 내부 데이터의 은닉에 활용
- 전역변수를 사용하지 않고 지역변수를 함수 밖에서 계속 참조 가능
- 내부 데이터의 은닉에 활용
- 객체 처리 효과를 사용할 수 있다
파이썬에서 클로저를 만들기 위한 조건
-. 중첩 함수(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 |
댓글