1. 이론
1) 코드 내 이론
전역번수(멤버변수)와 지역변수, global키워드
x = 1
def A():
x = 10
def B():
x = 20
def C():
global x
x += 30
print(x)
C()
B()
if __name__ == '__main__':
A()
# 출력값: 31
## global키워드 = 전역변수 가져오기
지역변수, 지역함수 내 지역변수, nonlocal키워드
def A():
x = 10
y = 100
def B():
x = 20
def C():
nonlocal x
nonlocal y
x += 30
y += 300
print(x)
print(y)
C()
B()
if __name__ == '__main__':
A()
# 출력값: 50, 400
## nonlocal키워드 = 바깥함수에서 전역변수 가져오기. 없으면 그 다음 바깥함수에서 가져옴.
클로저, 람다클로저
def calc():
a = 3
b = 5
total = 0
def mul_add(x):
nonlocal total
total = total + (a * x + b)
print(total)
def mul_add2(x):
nonlocal total
total = total + (a * x - b)
return print(total)
return {'mul_add': mul_add, 'mul_add2': mul_add2}
# 클로저 = 함수 안에 함수 호출하기
def clac_lambda():
a = 3
b = 5
return lambda x: a * x + b
# 람다로 클로저
if __name__ == '__main__':
calc()['mul_add'](1) # 출력값: 8
calc()['mul_add2'](1) # 출력값: -2
calc_lambda()(1) # 출력값: 8
## 클로저 = 함수 안에 함수를 만들어 안쪽 함수를 리턴
2) 그 외 이론 및 용어
객체 = 데이터가 구조화 할 때
객체 = 속성(자료구조) + 기능(알고리즘 = 함수)의 집합
**
변수 = property, attribute, column 등등
객체의 속성 = 변수
모듈의 속성 = 객체
라이브러리의 속성 = 모듈
속성 = data(대수) - H20, 객체 - 물, 모듈(패키지) - 조각, 라이브러리 - 상품
**
dfdf.xxx ⇒ 속성 꺼낼 때
dfdf.xxx() ⇒ 기능 꺼낼 때
D() ⇒ 클래스 생성자 실행
d() ⇒ 함수 실행..?
a.d() ⇒ 메서드 실행
a = b(””) ⇒ function
a = b() ⇒ getter
b(””) ⇒ setter
**
lambda 식 = 익명 함수
**
3) TMI
전처리 과정
분류 1
- mining(크롤링 - bs4사용)
- processing(데이터분석 - np/pd 사용)
- learning (머신러닝 - tensor)
- post(pro와 동일과정??)
⇒ 무한루프 or 릴리스(배포 - 아마존)
분류2 → 여기로 취업 목표
- processing
- learning
OOP와 FP의 전역변수 지역변수 인스턴스변수 구분하기
사이킷런 = 머신러닝 라이브러리
https://wiserloner.tistory.com/912
머신러닝 = 기계학습 ⇒ 컴퓨터가 코딩하게 학습
2. 코드
<mypandas 패키지>
fp_closure
@dataclass
class OOP:
x = 30
def foo(self):
x = self.x
print("OOP 출력: " + str(x))
x = 110
def foo():
global x
x = x + 20
print("FP 출력: " + str(x))
def A():
x = 10
y = 100
def B():
x = 20
def C():
global x
nonlocal y
x = x + 30
y = y + 300
print(x)
print(y)
C()
B()
def calc():
a = 3
b = 5
total = 0
def mul_add(x):
nonlocal total
total = total + (a * x + b)
print(total)
def mul_add2(x):
nonlocal total
total = total + (a * x - b)
return print(total)
return {'mul_add': mul_add, 'mul_add2': mul_add2}
# 클로저 = 함수 안에 함수 호출하기
def clac_lambda():
a = 3
b = 5
return lambda x: a * x + b
# 람다로 클로저
if __name__ == '__main__':
f = OOP()
f.foo()
foo()
print("전역출력: " + str(x))
A()
calc()['mul_add'](1)
calc()['mul_add2'](1)
c = clac_lambda()
print(clac_lambda()(1), clac_lambda()(2))
fruits
import pandas as pd
import numpy as np
MENUS = ["종료", "과일2D", "숫자2D"]
def new_fruites_df():
ls_schema = ['제품', '가격', '판매량'] # 스키마
l1 = ["사과", "딸기", "수박"]
l2 = [1800, 1500, 3000]
l3 = [24, 38, 13]
ls_apd = [l1, l2, l3]
dc = {j : ls_apd[i] for i,j in enumerate(ls_schema)}
df = pd.DataFrame(dc)
return df
def my_list(a, b):
return list(range(a, b))
def new_number_2d(): # 딕셔너리 없이 데이터프레임 만들기
return pd.DataFrame(np.array([my_list(1,10), my_list(11, 20), my_list(21, 30)]), columns=list(map(chr, range(97, 107))))
# 아스키코드 사용
if __name__ == '__main__':
while True:
[print(f"{i}:{j}") for i, j in enumerate(MENUS)]
menu = input("메뉴 선택: ")
if menu == "0":
print(MENUS[0])
quit()
elif menu == "1":
print(MENUS[1])
print(new_fruites_df())
elif menu == "2":
print(MENUS[2])
print(new_number_2d())
3. 마무리
수업 다 끝나고 실수로 집에서 한걸 pull해버려서 하루치 공부 코드가 전부 날아감 ^^
결국 다른 분 깃허브 보면서 기억을 거슬러 올라가 코드를 다시 작성하는 노동을 하였다.
오늘 팀프로젝트의 윤곽을 좀 잡았다.
00매칭시스템.. 아이디어 너무 좋아..
'비트캠프(AI아카데미) > TIL&WIL' 카테고리의 다른 글
| [비트캠프 - 클라우드 기반 AlaaS 개발자 과정] 22.11.15.(DAY-22) TIL (0) | 2022.11.16 |
|---|---|
| [비트캠프 - 클라우드 기반 AlaaS 개발자 과정] 22.11.14.(DAY-21) TIL (0) | 2022.11.15 |
| [비트캠프 - 클라우드 기반 AlaaS 개발자 과정] 9 10(DAY-18 19) TIL (0) | 2022.11.11 |
| [비트캠프 - 클라우드 기반 AlaaS 개발자 과정] 22.11.08.(DAY-17) TIL (0) | 2022.11.08 |
| [비트캠프 - 클라우드 기반 AlaaS 개발자 과정] 22.11.07.(DAY-16) TIL (0) | 2022.11.07 |
댓글