160x600
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- pythone
- Deep Learning
- HeidiSQL
- SQL예제
- 해석
- sklearn
- pandas
- python기초
- 딥러닝
- 데이터
- 훈련
- 선형회기모델
- 크롤링(crawling)
- 데이터 수집
- 데이터전처리
- MariaDB
- 정확도
- 데이터 가공
- keras
- 데이터 분석
- 회귀모델
- tensorflow
- 시각화
- 파이썬
- 예측
- Database
- 데이터베이스
- python
- 알고리즘기초
- 머신러닝
Archives
- Today
- Total
코딩헤딩
python 알고리즘 기초2 (클로저함수) 본문
728x90
1. 클로저를 이용해서 누적합 계산하기
# - 사용 함수 명 : outer_function2(), inner_function2(num)
# - 사용 변수 : total(누적된 값을 저장할 변수)
def outer_function2():
total = 0
print(f"#1 : total = {total}")
def inner_function2(num):
### nonlocal : 클로저 구조에서느 상위 변수를 내부 함수에서 사용못함
# : 따라서, nonlocal을 지정해서 정의하면 외부 영역의 변수 사용가능
nonlocal total
print(f"#2 : total = {total} / num = {num}")
total += num
print(f"#3 : total = {total} / num = {num}")
return total
print(f"#4----------------------")
return inner_function2
### 상위 함수 호출
res_fnc = outer_function2()
res_fnc
결과 : #1 : total = 0
#4----------------------
<function __main__.outer_function2.<locals>.inner_function2(num)>
#1 과 #4가 가장 큰 껍데기 역할을 한다.
### 내부 함수 호출1
rs_total = res_fnc(5)
print(rs_total)
결과 : #2 : total = 0 / num = 5
#3 : total = 5 / num = 5
5
가장 큰 껍데기 내부의 함수의 내부에 #2 와 #3이 다음으로 작동한다.
### 내부 함수 호출2
rs_total = res_fnc(10)
print(rs_total)
결과 : #2 : total = 5 / num = 10
#3 : total = 15 / num = 10
15
첫번째로 호출했던 내부함수의 10과 두번째로 호출한 내부함수5가 더해지면서 결과가 15가 된다.
2. 조건부 클로저 함수 프로그래밍
def outer_function3(condition):
def true_case():
return "true_case 함수가 호출되었습니다"
def false_case():
return "false_case 함수가 호출되었습니다"
### conditoin의 값이 True이면 true_case함수 정의
### False이면 false_case함수 정의
rs = true_case if condition else false_case
return rs
### 상위 함수 호출하기
rs_function = outer_function3(True)
print(rs_function)
rs_function = outer_function3(False)
print(rs_function)
결과 : <function outer_function3.<locals>.true_case at 0x000001B1AC70D4E0>-----> 함수의 메모리 주소
<function outer_function3.<locals>.false_case at 0x000001B1AC7E3380> -----> 함수의 메모리 주소
rs_msg = rs_function()
print(rs_msg)
결과 : false_case 함수가 호출되었습니다.
false가 나온 이유는 True가 실행된 이후에 False가 실행되었기 때문.
위에서부터 읽어 내려오는 파이썬의 특징.
728x90
'python' 카테고리의 다른 글
python 기초 13 (함수) (2) | 2023.11.16 |
---|---|
python 알고리즘 기초3 데코레이터(Decorator) (1) | 2023.11.15 |
python 알고리즘 기초1 (유니코드, 클로저함수 기초) (1) | 2023.11.14 |
python 연습문제2 (도서관리 키오스크 프로그램 만들기) (2) | 2023.11.14 |
python 기초 12 (예외처리) (1) | 2023.11.10 |