[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고 엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석 의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다. 1. Python Programming 문법 가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다. (1) Python 핵심 문법 정리 - 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행 - 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리 - 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화 # 자료구조와 함수 활용 예시 def process_data(data_list): result = {} for item in data_list: if item not in result: result[item] = 1 else: result[item] += 1 return result data = ['apple', 'banana', 'apple', 'orange', 'banana'] count_result = process_data(data) print(count_re...

Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class)

Day004 - 예외처리(Exception), 모듈(Module), 클래스(Class)

오늘은 예외처리(Exception Handling) 및 모듈(Module), 패키지(Package), 그리고 클래스(Class)와 파일 처리(CSV/JSON)를 학습했다. 에러에 대비해 안정적으로 구동되고 데이터를 영속적으로 저장하며 구조화하는 방법에 대해 학습한 내용을 정리해 본다.

1. 예외 처리(Exception Handling) 및 모듈(Module), 패키지(Package)

프로그램 실행 중 발생하는 에러(Error)로 인해 시스템이 중단되는 현상을 방지하기 위해 try-except 문법을 사용했다. 발생 가능한 예외 형태(ValueError, ZeroDivisonError, FileNotFoundError 등)를 명확히 지정하여 대처하고, elsefinally 블록을 활용해 상황별 로직을 분기하는 흐름을 정립했다. 또한 직접 예외를 발생시키는 raise 구문과 모든 예외의 최상위 클래스인 Exception 의 활용법을 학습했다.

예외 처리(try - except - else - finally) 실행 흐름도


더불어 코드의 재사용성을 높이는 모듈(Module)과 패키지(Package) 구조를 습득했다. Python 표준 라이브러리(math, random, datetime) 활용법과 더불어 패키지 폴더 내 __init__.py 의 역할을 이해하고 외부 라이브러리(rich)를 설치하여 터미널 출력을 시각적으로 개선하는 실습도 진행했다.

# 예외 처리 및 다중 except 적용 예시
def safe_division(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("[오류] 0으로 나눌 수 없습니다.")
        return None
    except TypeError:
        print("[오류] 숫자형 데이터만 연산 가능합니다.")
        return None
    else:
        return result
    finally:
        print("연산 시도가 완료되었습니다.")

2. 파일 처리(Text, CSV, JSON) 및 클래스(Class)

데이터 영속화를 위해 open() 함수와 with 구문을 이용한 파일 읽기/쓰기를 진행했다. 상대경로와 절대 경로의 차이를 다루며, 한글 깨짐 방지를 위해 encoding='utf-8' 옵션을 항상  적용하는 관례를 익혔다.

상대 경로와 절대 경로의 차이점


- CSV 처리: csv.DictReader 를 활용해 데이터를 딕셔너리 형태로 읽어와 key 기반 접근을 진행했다. CSV 내 모든 값은 문자열로 처리되므로 연산 시, int() 형변환이 필수적임을 확인했다.

- JSON 처리: Python Dict/List와 일치하는 JSON 구조 특성을 활용해 json.load()json.dump() 사용법을 익혔다. ensure_ascii=Falseindent=2 옵션으로 한글 출력 표준화 및 가독성을 높였다.

데이터 구조 변환 (CSV & JSON)


데이터와 동작을 하나의 단위로 묶는 클래스(Class) 개념을 학습하며, __init__ 초기화 메서드(Method)와 객체(Object) 자신을 가리키는 self 키워드의 동작 원리를 파악했다. 객체지향의 핵심인 상속(Inheritance)과 메서드 오버라이딩(Method Overriding)을 다르며, 부모 클래스의 초기화를 호출하는 super().__init__() 활용법도 학습했다.

클래스, 객체 및 상속 구조


# Shape 부모 클래스 및 Rectangle 자식 클래스 상속 예시
class Shape:
    def __init__(self, name):
        self.name = name

    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        super().__init__("직사각형")
        self.width = width
        self.height = height

    def area(self): # 메서드 오버라이딩
        return self.width * self.height

- Keep : 에러 메시지의 traceback 맨 아랫줄부터 차근착느 해석하며 원인을 파악하려는 자세를 유지했다.
- Problem: 클래스 정의 시, 메서드의 첫 번째 매개변수로 self 를 누락하거나, CSV 데이터를 가져 온 후 형변환을 잊어 연산 오류가 발생하는 실수가 있었다.
- Try: 파일 입출력 시, 예외처리를 감싸 안정성을 확보하는 습관을 들이고, 클래스 상속 구조 설계 시, 중복 코드를 최소화하는 연습을 꾸준히 이어갈 계획이다.



#Exception #CSV #JSON #Class #Module #Package #traceback #init #dump

댓글

이 블로그의 인기 게시물

[SK네트웍스 family 엔코아AI캠퍼스] 나의 목표는 머신러닝 엔지니어다.

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 3주차 회고

git 개요 및 설치