-
Python-basic 함수 클로저 : 내부함수 반환Python 2021. 2. 11. 04:17728x90
closure(클로저) : 내부 함수의 주소를 반환해서 함수의 멤버를 계속적으로 참조하는 것
def outer(): count = 0 def inner(): nonlocal count count += 1 return count return inner #이게 클로저 >> 내부 함수의 주소를 치환 print('*'*10,) outer() print(outer()) #inner 주소 print('*'*10) obj1 = outer() # inner의 주소를 치환 print(obj1) #주소 print(obj1()) #주소의 리턴값 print('*'*10) result = obj1 #주소 print(result) result = obj1() #주소의 리턴값 print(result) print('*'*10) print(obj1())
[출력 결과]
**********
<function outer.<locals>.inner at 0x0000017CC92395E0>
**********
<function outer.<locals>.inner at 0x0000017CC92395E0>
1
**********
<function outer.<locals>.inner at 0x0000017CC92395E0>
2
**********
3[출력결과 설명]
클로저 :
내부함수의 주소를 치환함으로
내부 함수의 증가값이 출력되게 하였다.
클로저 응용
def outer2(tax): def inner2(su, dan): amount = su * dan * tax return amount return inner2 # 이게 클로저 part1 = outer2(0.1) result1 = part1(5, 10000) print('1분기 tax : ', result1) result2 = part1(10, 20000) print('1분기 tax : ', result2) part2 = outer2(0.05) result3 = part2(5, 10000) print('2분기 tax : ', result3) result4 = part2(10, 10000) print('2분기 tax : ', result4)
[출력 결과]
1분기 tax : 5000.0
1분기 tax : 20000.0
2분기 tax : 2500.0
2분기 tax : 5000.0[출력결과 설명]
'Python' 카테고리의 다른 글
Python-basic 재귀함수 - 함수가 자신을 호출 (0) 2021.02.11 Python-basic 함수 가변인수 아큐먼트의 갯수가 부정확할 때 ** (0) 2021.02.11 Python-basic 함수 가변인수 아큐먼트의 갯수가 부정확할 때 * (0) 2021.02.11 Python-basic 함수 아규먼트(argument) 키워드 매칭 (0) 2021.02.11 Python-basic 함수 안에 지역변수와 전역변수 구분!! (0) 2021.02.11