1. Intro
1주차 때보단 확실히 생활에 많이 적응되었다. 특히 1호선 지하철이 지옥이라 내릴 때마다 고통이었지만 내리는 곳을 외우니 도움이 많이 되었다 ㅋㅋ 아무튼 이번 주차는 파이썬의 함수, 클래스, 라이브러리, 데이터베이스의 DDL, DCL, DML을 배우면서 2주차 수업이 끝이 났다! 파이썬과 데이터베이스는 대학교에서 공부했던 내용들이라 크게 어렵진 않았지만, 클래스와 라이브러리는 자세히 배우진 않았어서 새롭게 공부하는 느낌이었다.
2. 배웠던 내용
내용을 다 적으면 너무 많아지니 중요하거나 몰랐던 내용 위주로 적겠다.
파이썬 개념 정리
1. Python의 Random 모듈
- random.random(): 0~1 사이의 실수값 랜덤 추출
- random.randint(a, b): a~b 사이의 정수값 랜덤 추출 (a, b는 정수)
- random.choice(시퀸스 자료형): 시퀸스 자료형(리스트, 튜플 등)에서 값 하나를 랜덤으로 추출
2. 함수(Function)
- 함수: 특정 작업을 수행하는 코드의 집합
- 종류:
- 입력변수 X, 출력변수 X인 함수
- 입력변수 X, 출력변수 O인 함수
- 입력변수 O, 출력변수 X인 함수
- 입력변수 O, 출력변수 O인 함수
3. Scope(변수의 사용 범위)
- 지역 변수 (local): 함수 내부에서 선언하며, 외부에서 사용 불가
- 전역 변수 (global): 함수 외부에서 선언하며, 어디서든 사용 가능 (지양해야 함)
- 전역 변수를 지양하는 이유:
- 코드 로직이 복잡해짐
- 유지보수가 어려워짐
- 전역 변수를 지양하는 이유:
4. 입력 변수
- 원하는 개수만큼 선언 가능
- 함수 호출 시 반드시 정의된 개수만큼 인자를 넣어야 함
- Python은 오버로딩을 지원하지 않음 (함수 이름은 고유)
5. 디폴트 파라미터
- 디폴트 파라미터: 기본값이 설정된 파라미터
- 선언 방법: 함수 정의 시 변수명=기본값 형태로 지정
6. 가변 파라미터
- 가변 파라미터: *변수명 형태로 선언하여, 여러 개의 입력값을 받을 수 있음
- 입력값은 튜플 형태로 처리됨
7. 키워드 가변 파라미터
- 키워드 가변 파라미터: **변수명 형태로 선언
- 전달된 키워드 인자를 딕셔너리 형태로 처리
8. Lambda Function
- 람다 함수: 한 줄로 작성 가능한 익명 함수
- 함수도 데이터처럼 취급 가능 (입력 변수로 전달 가능)
9. Closure
- 내부 함수를 외부로 호출하여 정보 은닉을 구현
- 사용 목적: 내부 함수의 접근을 제한하면서 내부 상태를 유지
10. Callback Function
- 콜백 함수: 다른 함수의 인자로 사용되는 함수
- 차이점:
- 클로저: 내부 함수를 외부로 호출
- 콜백: 외부 함수를 내부 함수에서 호출
11. Decorator
- 데코레이터: 기존 코드 수정 없이 기능을 추가하거나 수정하는 구조
- 흐름:
add(1, 2) → @decorator_func(add) 실행 → wrapper_func(1, 2) 실행
12. Annotation
- 어노테이션: 함수의 매개변수나 반환값에 자료형 힌트를 제공
- 사용 방법: 변수명: 자료형
13. 클래스(Class)
- 클래스: 객체를 생성하기 위한 설계도
- __init__: 객체 생성 시 호출되는 생성자 메서드
- self: 인스턴스 자신을 가리키는 참조
- 메서드 종류:
- 인스턴스 메서드: 첫 번째 매개변수로 self 사용
- 정적 메서드: @staticmethod로 정의, self 없이 독립적인 로직 처리
14. 상속(Inheritance)
- 상속: 부모 클래스의 속성과 메서드를 자식 클래스에서 물려받음
- 특징:
- 부모 클래스의 모든 속성과 메서드 자동 상속
- 자식 클래스에서 추가 정의 및 오버라이딩 가능
15. 프라이빗 함수
- 프라이빗 함수: 외부 접근을 막는 함수
- 정의: 함수명 앞에 __ 붙임
- 사용 방법: 객체._클래스명__메서드명() 또는 퍼블릭 함수에서 프라이빗 함수 실행
16. Collections
- 다양한 데이터 구조 제공 모듈
- Counter: 데이터의 개수를 저장하는 객체
- most_common(n): 가장 많이 등장한 요소 n개 반환
- +, - 연산도 가능
17. Datetime
- 날짜와 시간을 조작할 수 있는 모듈
- datetime.now(): 현재 시간 출력
데이터베이스 개념 정리
1. 데이터의 종류
- 정형 데이터: 고정된 스키마를 따르는 데이터 (ex: 관계형 DB)
- 반정형 데이터: 스키마는 없지만 메타데이터 포함 (ex: XML, JSON)
- 비정형 데이터: 스키마가 없는 데이터 (ex: 텍스트, 이미지)
2. Mysql 구조
- Mysql > Databases > Tables > Data
- 데이터베이스 안에 여러 테이블이 존재하며, 테이블에는 데이터가 저장됨
3. SQL 언어
- DDL: 데이터 정의어 (CREATE, ALTER, DROP 등)
- DML: 데이터 조작어 (INSERT, UPDATE, DELETE 등)
- DCL: 데이터 제어어 (GRANT, REVOKE 등)
4. 기본키와 외래키
- 기본키: 데이터 행을 유일하게 구분하는 컬럼
- 외래키: 다른 테이블의 기본키를 참조하는 컬럼
5. 데이터 조작
- INSERT: 데이터를 삽입
- UPDATE: 데이터를 수정 (WHERE 없이 실행 시 모든 데이터 수정 주의)
- DELETE: 데이터를 삭제 (WHERE 없이 실행 시 모든 데이터 삭제 주의)
6. SELECT 문
- AS: 컬럼명 출력 형식 지정
- ORDER BY: 정렬 (오름차순: ASC, 내림차순: DESC)
- WHERE: 조건을 지정하여 원하는 데이터만 추출
- LIKE: 패턴 매칭 (ex: 'N%' → N으로 시작하는 값)
3. 느낀점
- Facts (내가 한 일)
2주차는 파이썬의 함수, 클래스, 라이브러리, 데이터베이스의 DDL, DCL, DML를 배웠다.
- Feelings ( 나의 감정적인 반응, 느낌 )
파이썬에서 클래스와 표준 라이브러리에 대해 알고 있진 않아서 걱정을 했지만 JAVA에서 배웠던 클래스 개념과 크게 다르지 않아 쉽게 이해가 되었다. 데이터베이스는 커리큘럼상 3일만 가르쳐서 조금 의아했지만 이틀 동안 들어보니 필요한 내용은 충분히 전달되었다고 느꼈다. 게임으로 비유하자면 딱 조작법만 알려주는 느낌이라 아쉽긴 하지만 AI 캠프이니 배울 게 너무 많고, 중요도가 상대적으로 낮기 때문에 어쩔 수 없는 부분이라 생각한다. 가끔씩 강사님께서 문제를 내주시는데 다른 10기생들의 풀이를 보면 놀라운 경우가 많았다. 그 이유는 내가 문제를 못 풀어서가 아니라, 다른 사람들이 작성한 코드가 정말 깔끔하고 명료했기 때문이었다. 이를 보면서 미니 프로젝트나 파이널 프로젝트에서 팀원들과 함께 작업할 때, 서로 배우고 얻어갈 점이 많을 것 같다는 기대감이 생겼다.
- Findings ( 배운 것 )
클로져, 콜백 함수, 데코레이터, 람다 함수, 그리고 여러 표준 라이브러리를 배웠다.
람다 함수를 제외하고 처음 보는 개념들이었고, 다시 한번 나는 정말 기초만 배웠구나를 몸소 느꼈다.
- Future ( 미래 )
다음주는 미니 프로젝트를 팀원들과 함께 만들어야 한다. 다른 10기생들 수준이 정말 높다는걸 알기 때문에 어떤 결과물이 나올지, 팀원들로부터 어떤 점을 배우게 될지 기대가 되면서 설레기도 하다.
'부트캠프 > sk 네트웍스 ai 캠프' 카테고리의 다른 글
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 6주차 회고 (1) | 2025.02.16 |
---|---|
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 5주차 회고 (1) | 2025.02.09 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 1월(4주차) 회고 (0) | 2025.02.01 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 3주차 회고 (1) | 2025.01.30 |
[플레이데이터 SK네트웍스 Family AI 캠프 10기] 1주차 회고 (0) | 2025.01.12 |