1. Intro
나는 1월 7일부터 시작되는 SK네트웍스 AI 캠프 10기에 참여하게 되었다! 전공자 출신이라 부트캠프를 굳이 가야 되나 고민을 한참 했었지만 AI는 확실히 혼자 독학하기에는 진입장벽이 높고, 학교에서는 AI를 석사 가서 배우라는 식으로 이론만 대충 가르쳤기 때문에 고민을 하다 부트캠프 가서 배우자는 결론이 나왔다. 사실 부트캠프는 여러 종류가 많지만, 그중 내가 SK네트웍스 AI 캠프를 고르게 된 이유는 다음과 같다.
- 1. 웹 개발자 내용 70% + AI 30% 끼워 넣는 게 아닌 완전 AI만을 가르친다.
- 2. 거리상으로 그나마 가까운 곳이다.
- 3. SK네트웍스의 자회사인 엔코아에서 주관한다.
1. 부트캠프를 찾아본 사람들은 알겠지만, AI 관련 부트캠프를 찾아보면 웹 개발(프론트+백엔드)에 AI를 살짝 첨가하는 게 대부분이다. 그래서 AI 내용을 집중적으로 다루는 곳을 찾다 보니 SK네트웍스 Family AI 캠프가 있었다.
2. 개인적인 이야기지만 내가 사는 곳은 서울쪽이 아니라서 강남까지 가는데 1시간 반이 넘게 걸린다. 그래서 지하철로 1시간 정도 소요되는 곳이 여기였다.
3. 부트캠프는 여러 종류가 있기 때문에 믿을 수 있는 곳을 가야 된다. 그래서 SK네트웍스의 자회사인 엔코아에서 주관하는 이 부트캠프에 참여하게 되었다.
2. 배웠던 내용
배웠던 내용을 다 적으면 내용이 너무 길어지니 몰랐거나 중요한 내용 위주로 적겠다.
- Visual Studio Extensions
Visual Studio를 학부 때 많이 써와 Python, Jupyter는 설치했었는데 Material Icon Theme, Indent-rainbow는 처음 이였다. Material Icon Theme은 프로젝트에서 파일과 폴더의 종류에 따라 아이콘을 제공하여 가시성과 생산성을 향상시키는 역할을 하고, Indent-rainbow는 코드의 들여쓰기 수준에 따라 색상을 적용하여 코드 가독성을 높이고 들여쓰기 오류를 줄이는 데 도움을 준다.
- ExecutionPolicy(실행 정책)
ExecutionPolicy는 Windows PowerShell에서 스크립트 실행 및 로드 동작을 제어하는 보안 기능이다. 기본값은 Restricted로 스크립트 파일이 실행되지 않는 상태인데, RemoteSigned로 설정해두면 해당 로컬 컴퓨터에 작성된 모든 스크립트가 실행이 가능하며 인터넷에서 다운로드한 스크립트는 인증기관에서 발행된 코드로 서명되어야만 실행이 가능하다. 이걸 설정하는 이유는 보안이 개발에 방해되는 것을 줄이기 위해서라고 들었다.
- python 가상환경 생성, 진입, 탈출
- py -(파이썬 버전) -m -venv (가상환경 이름) : python 가상환경을 만드는 명령으로, 프로젝트 폴더에서 쓰면 된다!
- .\.venv\Scripts\activate : 정확히 말하면 위 사진의 Scripts 폴더 안에 있는 activate를 실행시키면 가상 환경에 진입한다. 가상환경 진입 시 맨 왼쪽에 (가상환경 이름)이 뜬다.
- deactivate : 이 명령을 쓰면 가상환경에서 빠져나온다.
- pip 패키지 업그레이드
pip는 Python에서 사용하는 패키지 관리 도구로, Python 패키지를 설치, 업그레이드, 삭제, 관리할 수 있도록 도와준다. 새 가상환경을 만들고 꼭 해줘야 한다고 들었다.
- python -m pip install --upgrade pip : pip 패키지를 업그레이드하는 명령
- 패키지 설치, 삭제
- pip install (패키지명) : 패키지 설치
- pip uninstall (패키지명) : 패키지 삭제
- 상수 구현
나는 지금까지 "파이썬에선 상수를 따로 처리하는 문법은 없어 대문자로 표시한다"고만 알고 있었는데, 위 사진처럼 Enum을 이용해 상수처럼 만들어 수정하지 못하게 하는건 몰랐다! 사용법은 클래스를 만들고 인자로 Enum을 준다음 클래스 안에 내가 원하는 변수를 만들면 그게 상수가 된다!
- enum.auto() : Enum 클래스에서 멤버의 값을 자동으로 생성할 때 사용됩니다. 자동으로 할당되는 값은 1부터 시작!
- 클래스명.멤버이름.name : 멤버이름 출력
- 클래스명.멤버이름.value : 해당 멤버가 가진 값 출력
- 클래스명.__members__ : 모든 멤버를 딕셔너리 형태로 반환
- 인덱싱/슬라이싱, len(), type()
예를 들어 문자열 "홍길동"이 있다면 '홍'는 0번 인덱스, '길'는 1번 인덱스, '동'은 2번 인덱스에 들어가게 된다.
그래서 name = "홍길동"이라면 name[0]를 치면 '홍'이라는 문자를 가져올 수 있게 되는데 이게 인덱싱이고,
name[0:2]를 치면 "홍길"이라는 문자열을 가져오게 되는데 이걸 슬라이싱이라 부른다.
또, name[-1]처럼 음수로 인덱스를 치게 되면 맨뒤 문자를 가져오는데 이걸 음의 인덱스라 부른다.
음의 인덱스는 인덱싱/슬라이싱 모두 활용 가능하다.
- len(변수) : 객체의 크기를 반환하는 함수로, int나 str은 반환되지 않고 에러
- type(변수) : 변수의 타입을 반환하는 함수
- format()
그동안 %()로 포맷팅을 해서 .format()은 포맷팅은 들어 보기만 했다. print(f"....{변수명}")해서 해도 되고, print("....{0}{1}...".format(변수명,변수명)) 해서 해도 된다. 중요한 건 변수에 따라 출력을 달리 할수 있다는 것이다.
- List, Tuple, Dictionary, Set
깊게 말하면 끝이 없으니 요약해서 정리한다.
List는 여러 데이터를 저장 가능한 자료형으로 수정/삭제가 가능하고, 순서가 있고, 중복이 허용된다.
대표적인 메서드로 append(), extend(), sort()가 있고, 문자열처럼 인덱싱/슬라이싱 가능하다.
Tuple은 list와 비슷하게 순서가 있고, 중복이 허용되지만 수정/삭제가 불가하다!
주의점은 튜플의 내용을 변경할 수는 없지만, 새로운 튜플을 만들어서 기존 튜플이 가리키는 참조를 바꿀 수 있다!
예를 들어 c = (1,2,3), d = (4,5,6)이라면 c[0] = 5 이렇게 튜플 내용을 수정할 순 없지만, d = c + d 이런 식으로 c와 d를 결합한 새 튜플을 만들어서 d가 가리키게 한다면 그건 작동한다는 것이다!
Dictionary는 키와 값으로 이루어진 자료형으로 키를 이용해 값을 참조한다.
a = {"name" = "홍길동", "age" = 21} 이렇게 만들 수 있고,
a[키명]으로 값을 참조할 수 있고, a[키명] = 값을 이용해 값을 수정하거나 새 키와 값을 생성할 수 있다.
a.keys()로 키들만 출력, a.values()로 값들만 출력, a.items()로 키와 값 쌍으로 출력할 수 있다.
a.get(key, default)로 해당 키가 존재하면 키에 대응하는 값을 출력하고 없다면 default를 출력한다!
Set는 중복을 허용하지 않는 자료형이다! 즉, 중복된 원소가 들어간다면 중복이 제거된다.
& 연산자로 교집합, | 연산자로 합집합, - 연산자로 차집합을 구할 수 있다.
- Boolean
Boolean은 True/False 값을 가지는 자료형이다.
int, float -> bool이 되면 0이 아닌 값을 True, 0이면 False가 되고
str, list, tuple 등 -> bool이 되면 size가 1 이상이면 True, 0이면 False가 된다!
- if~else, if~elif~else문
조건문은 상황에 따라 코드의 흐름을 다르게 실행하는 구조를 말한다.
if~else문은 if문 조건이 True이면 if문 블록을 실행하고, 아니라면 else문 블록을 실행한다.
if~elif~else문은 if문 조건이 True이면 if문 블록 실행, 아니면 계속 아래 조건문으로 내려가며 조건을 따진다. 만약 True인 조건이 없을때 else문 블록을 실행한다.
- for~else문
난 for~else문을 모르고 있었다. for~else문은 for문의 실행이 중간에 종료되지 않는다면 else문 블록을 실행하는 조건문이다!
- break, contine, pass, enumerate()
- break : 반복문에서 탈출한다.
- continue : 아래 실행문을 실행하지 않고 바로 다음 반복으로 넘어간다.
- pass : 아무 의미가 없다.
- enumerate() : 반복 가능한 객체(iterable)를 순회할 때 인덱스와 값을 동시에 가져온다. 주로 for문에서 쓰인다.
- while문
while문은 반복문의 한 종류로 for문과 달리 조건식이 필요하고, 조건식이 항상 참이 되지 않게 상황에 따라 증감식이 필할 수 있다. 조건식이 False이면 반복문에서 탈출한다.
- 예외 (Exception)
예외(Exception)는 프로그램 실행 중에 발생할 수 있는 오류 상황을 나타낸다.
- ValueError : 부적절한 값(데이터)을 가진 인자를 받았을 때 발생하는 에러
- IndexError : 인덱스 범위를 벗어나는 경우에 발생하는 에러
- SyntaxError : 문법 오류가 발생하는 에러
- ZeroDivisionError : 0으로 나눌 때 발생하는 에러
- TypeError : 잘못된 타입을 사용했을 때 발생하는 에러
- 예외처리
예외처리는 발생할 수 있는 오류를 미리 예측하고 처리하여, 프로그램이 갑자기 종료되지 않도록 하는 방법이다.
- try문 : 예외가 발생할 수 있는 코드를 적는 블록
- except문 : 예외를 처리하는 블록, 주의할 점은 위에서부터 아래로 if~elif문처럼 처리한다는 것이다. try문을 처리하다가 예외가 발생되면 해당 except 블록을 실행함.
- else문 : for~else문처럼 try문이 완벽히 실행됐을 때 실행하는 블록
- finally문 : 예외 발생 여부 상관없이 실행하는 블록
3. 느낀점
- Facts (내가 한 일)
1주차는 간단한 환경 설정, 가상 환경 생성, 파이썬 기초를 배웠다.
- Feelings ( 나의 감정적인 반응, 느낌 )
나는 전공자로써 파이썬을 다 알고 있다고 생각했었다. 그런데 for~else문, try~else문, Enum과 같이 몰랐던 내용도 있어서 꽤 신기하면서도 학교에서 배우는 것들만 따라갔던 나 자신을 반성하게 되었다. 그리고 수업 외적으로 파이썬을 접해봤거나 전공자 출신이 많은것에 많이 놀랐다.
- Findings ( 배운 것 )
for~else문, try~else문을 처음 배웠고, Enum같이 상수가 수정되지 않게 정의하는 법을 배웠다.
그리고 pass의 의미와 머릿속에 지워졌던 가상환경 생성과 여러 조작법을 다시 상기시켰다.
나머지 내용들은 이미 알았던 내용들이라 복습하는 느낌이었다.
- Future ( 미래 )
파이썬 기초를 다시 하면서 몰랐던 내용들이나 알았던 내용들까지 정리해두는 습관이 중요함을 깨달았다. 앞으로도 회고를 꾸준히 작성해야 겠다는 생각이 들었고, 추후 프로젝트에 꼭 도움이 될 것이라 생각한다!
'부트캠프 > SK Networks AI Camp 10기' 카테고리의 다른 글
[플레이데이터 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기] 2주차 회고 (0) | 2025.01.19 |